
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