使用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

相關內容