루프 내부에 연결 변수 인쇄

루프 내부에 연결 변수 인쇄

나는 이 코드를 가지고 있습니다 :

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

두 번째 필드에서 문자열을 검색 awk하고 첫 번째 및 세 번째 필드를 인쇄합니다. 출력은 다음과 같습니다.Hello$2$1$3

1111111 John
3333333 Linda

관련 정보