使用awk代替for循环进行多行字符串操作

使用awk代替for循环进行多行字符串操作

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

相关内容