问题描述
我有一个文件,其中包含几行,每行包含一个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