ループ内に接続変数を印刷する

ループ内に接続変数を印刷する

私はこのコードを持っています:

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

$pvar $2in 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

おすすめ記事