![줄 번호 목록이 제공된 파일에서 연속되지 않은 줄을 인쇄합니다.](https://linux55.com/image/131619/%EC%A4%84%20%EB%B2%88%ED%98%B8%20%EB%AA%A9%EB%A1%9D%EC%9D%B4%20%EC%A0%9C%EA%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%97%B0%EC%86%8D%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EC%A4%84%EC%9D%84%20%EC%9D%B8%EC%87%84%ED%95%A9%EB%8B%88%EB%8B%A4..png)
몇 가지 생각을 한 후에 다시 다음과 같은 줄 번호 목록을 얻습니다 grep
.awk
grep
20
55
98
154
1100
...
내가 사용하는 명령은 다음과 같습니다.
grep '01/01' /var/log/some.log | grep 'some' | awk '{print $10}' | grep -vn 200 | awk -F ':' '{print $1}'
이제 이 명령을 계속해서 파이프하여 이 파일에서 다음 줄을 인쇄하고 싶습니다. 어떤 아이디어가 있나요?
awk '{print $10}'
간단히 삭제할 수 있다는 것을 알고 있지만 awk -F ':' '{print $1}'
어떤 이유에서인지 삭제하면 결과가 나오지 않습니다. 반면에 위에 게시된 명령을 사용하려고 하면 숫자 목록이 표시됩니다.
답변1
해결책:
| xargs -I{} sed '{}q;d' /var/log/some.log
논평:
sed
awk
좀 더 자세한 명령 이나 명령을 작성하여 perl
긴 파이프 목록(위의 마지막 단계 포함)을 줄일 수 있습니다.
perl -lane 'print $F[9] if /01\/01/ and /some/ and $F[9]!~/200/' /var/log/some.log