awkは行を変数($ PWD)に関連付けることはできません。

awkは行を変数($ PWD)に関連付けることはできません。

ディレクトリのリストを含むファイルがあります。

$ cat dirs.txt
/some/path
/other/path
/some/another/one

現在のディレクトリは/home/loom

$ echo $PWD
/home/loom

$PWD次のように各行に追加したいと思いますdirs.txt

/home/loom/some/path
/home/loom/other/path
/home/loom/some/another/one

失敗しながらコマンドを試しました。

$ cat dirs.txt | awk '{print $PWD$1}'
/some/path/some/path
/other/path/other/path
/some/another/one/some/another/one

各行を2倍にします。私の問題を解決できるコマンドは何ですか?


私の言葉はパラメータ応答を意味したものです。cat dirs.txt | awk '{print "/home/loom" $1}'

ベストアンサー1

PWDはシェル変数なので、awkで使用される単一引用符内では拡張されません。

awk -v pwd="$PWD" '{print pwd$1}' dirs.txt

これはpwd awk変数をシェル変数の値に設定し、各行の列PWD1を印刷しdirs.txtてその値を先頭に追加します。

GNU awkでは、ファイルを出力で上書きするオプションを使用できます-i inplace。それ以外の場合は、ファイルを新しいファイルにリダイレクトし、必要に応じて既存のファイルを上書きする必要があります。

おすすめ記事