■ sedでも対応してみる awkの$3は3つあることを確認している。 つまりsedでも3個あることを確認すればいい。 フィールドが3個ということは区切りは2個なので/ .* /でok。 % seq 100|xargs -n3|sed '/ .* /s/[^ ]*$/Fizz/'|xargs -n5|sed '/ .* .* .* /s/[0-9]*$/Buzz/'|xargs -n1 ちょっと不恰好だけど、正規表現で条件を書けばいける。 ■ readの挙動 while read lineで読んでいるときに最終行に改行がないとループを抜けてしまう。 だが、read自身はちゃんとlineへ反映させているのであった。 % bash -c 'echo -n foo | while read line; do echo $line; done' % bash -c 'echo -n foo | {