나는 이 코드를 가지고 있습니다 :
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
두 번째 필드에서 문자열을 검색 awk
하고 첫 번째 및 세 번째 필드를 인쇄합니다. 출력은 다음과 같습니다.Hello
$2
$1
$3
1111111 John
3333333 Linda