こんにちは、for ループで gawk を使用したいと考えています。このようなもの:
for i in gawk {print $1} | tr '\n' ' '
do something using $i
これはもちろん機能していません。アイデア?
逆引用符が欠落しているか$(...)
、awk コマンドを評価する必要があります。
for i in $(ls -l | gawk '{print $1}' | tr '\n' ' ')
do
echo $i
done
最後の tr コマンドは必要ありませんが、暗黙的なコマンドからの出力では$(...)
、このコンテキストでは改行がスペースに変換されるためです。
上記の回答では、gawk がサブルーチンで、bash がドライバーです。
もう 1 つの方法は、組み込みのシステムコマンドを使用して gawk をドライバーにすることです。
例えば:
ls | gawk '/^a/ { system("ls -lsa " $1)}'
これは、(たとえば) Bash の文字列処理ツールが少し難解すぎる場合に便利です。
for i in `echo how now | gawk '/how/ { print $2 }'`; do
echo ...$i
done
と
$ sh test.sh
...now
$