複数行の文字列操作では、forループの代わりにawkを使用してください。

複数行の文字列操作では、forループの代わりにawkを使用してください。

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

おすすめ記事