我有这样的代码:
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
和$2
var 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