file1
假设一个包含文件路径的多行文本文件 ( )。
$ cat file1
./foo/foo
./foo/bar
./foo/baz
我只想保存文件名,file2
并在每个文件名前面加上一些特殊字符(例如,[#
)。
我知道我可以通过一个简单的 for 循环来做到这一点,但我知道这被认为是一种不利的做法。
for line in $(cat file1); do
echo "[#" $(basename "$line") >> file2;
done
我相信这个任务可以通过 更干净地完成awk
,但下面的代码只是一个片段。我如何执行上述任务awk
?
awk '{print "[#",$0=$(basename $0)}' $file1 > $file2
答案1
用作/
字段分隔符,并打印最后一个字段:
$ awk -F/ '{print "[#"$NF}' file1
[#foo
[#bar
[#baz
答案2
sed -e 's|.*/|[#|' file1
结果
[#foo
[#bar
[#baz