특정 문자열이 포함된 컬렉션을 추출하고 싶습니다. 예를 들면 다음과 같습니다.
파일 abc.txt
에 다음이 포함됨
abc 123
abcd 1234
abcde 12345
abc 123
abcd 123
abcde 12345
abc 123
abcd 1234
abcde 12345
이제 위 세트에서 두 번째 세트의 두 번째 행에 가 없음을 알 수 있습니다 1234
. 그래서 제가 추출하고 싶은 것은 그러한 문자열을 가지고 있는 컬렉션입니다.
abc 123
abcd 123
abcde 12345
답변1
> awk -v RS=$'\n\n' -v FS=$'\n' -v ORS=$'\n\n' '$2 ~ /123$/ {print}' abc.txt
abc 123
abcd 123
abcde 12345
답변2
GNU의 표준 프로그램이다.sed
sed '/abc 123/{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt
또는
sed '/^$/!{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt
abc 123
블록의 첫 번째 줄이 아닌 빈 줄을 대상으로 하는 경우 ( )