私はこのコードを持っています:
cat input | while read p; do
lynx -dump "www.xyz.com/p?=$p" | grep -m 1 -A 1 "Hello" | awk -F: '{print $2}' >> output
done
内容は次のとおりです。
[$p lines from input] [wget]
1111111 Hello: John
2222222 Hi: Maria
3333333 Hello: Linda
これまではうまく機能し、印刷中です。
John
Linda
$p
var $2
in awk
(または他のもの)をすべて印刷するようにどのように変更できますか?このように:
1111111 John
3333333 Linda
ベストアンサー1
次のように変更してください。
cat input | while read p; do
{ echo -n "$p "; lynx -dump "www.xyz.com/p?=$p"; } | awk '$2~/Hello/{print $1" "$3}'
done
最初のパイプラインの前に、次を使用してコマンドをグループ化できます。コマンドのグループ化知らせる{ list; }
。完全なコマンドリストにリダイレクトを適用できるという利点があります。リダイレクトされた出力は次のとおりです。
1111111 Hello: John
2222222 Hi: Maria
3333333 Hello: Linda
2番目のフィールドで文字列を検索し、1番目awk
と3番目のフィールドを印刷します。出力は次のとおりです。Hello
$2
$1
$3
1111111 John
3333333 Linda