在循环内打印 concat 变量

在循环内打印 concat 变量

我有这样的代码:

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$2var 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

并在第二个字段中awk搜索字符串并打印第一个和第三个字段。输出如下:Hello$2$1$3

1111111 John
3333333 Linda

相关内容