如何在Linux中分割线

问题描述

我有一个文件,其中包含几行,每行包含一个url-

http://some_address1/some_page1/anther_page1/my_target1
http://some_address2/some_page2/some_page2/my_target2
...

我想创建一个新文件,该文件的每个网址末尾-

my-target1
my_target2
...

如何在Linux cmd中执行此操作?

解决方法

您可以使用awk,将/设置为字段定界符,并将print设置为最后一个字段($NF):

$ awk -F/ '{print $NF}' file

输出:

my_target1
my_target2
...

创建新文件,该文件的每个url结束在上述命令后添加> newfile。这将创建一个名为newfile的新文件,或者将其覆盖(如果已存在)并将上述输出发送给它。

,

您可以使用basename

basename "http://some_address1/some_page1/anther_page1/my_target1"

申请文件中的所有行:

xargs basename < urls_file
,

您可以使用以下bash命令,其中file是输入文件的路径,而output是所需输出的路径:

while read line; do basename $line; done < file > output
,

由于mapfile,使用bash数组和参数扩展需要bash4 +。

#!/usr/bin/env bash

mapfile -t urls < file.txt

for i in "${urls[@]##*/}"; do
  printf '%s\n' "$i"
done
  • printf '%s\n' "$i"替换为touch "$i"或仅替换> "$i",以创建一个新的空文件。
,

使用sed

sed 's|^.*/||' file > new_file

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...