다음은 파일의 텍스트 블록 예입니다.
Now is the time for all blah:1; to come to the aid
Now is the time for all blah:1; to come to the aid
Now is the time for all blah:1; to come to the aid
Now is the time for all blah:10; to come to the aid
Go to your happy place blah:100; to come to the aid
Go to your happy place blah:4321; to come to the aid
Go to your happy place blah:4321; to come to the aid
Now is the time for all blah:4321; to come to the aid
Now is the time for all blah:9876; to come to the aid
Now is the time for all blah:108636; to come to the aid
Now is the time for all blah:1194996; to come to the aid
질문: "is the"가 포함된 행에서 모든 고유 번호를 추출하는 방법은 무엇입니까?
'를 사용해 보았 grep -o -P -u '(?<=blah:).*(?=;)
으나 세미콜론이 마음에 들지 않습니다.
답변1
\K
방금 일치한 내용을 잊어버리기 위한 지침을 찾고 있습니다 .
grep -oP 'is the.*?blah:\K\d+'
그 다음에sort -u
답변2
사용 sed
:
$ sed -n '/is the/s/^.*blah:\([0-9]*\);.*$/\1/p' file | sort -u
1
10
108636
1194996
4321
9876
is the
바꾸기는 문자열을 포함하는 모든 줄의 내용을 와 사이의 숫자로 바꿉니다 . 이 문자열을 포함하지 않는 줄은 무시됩니다.blah:
;
답변3
cat file | grep "is the" | awk -F':' '{print $2}'|awk -F';' '{print $1}'|sort -u
답변4
이 시도:
grep "is the" file | sed 's/.*blah://;s/;.*//' | sort -u
설명하다:
grep
is the
행의 어느 부분에서든 " "이 있는 모든 행을 가져옵니다 .sed
:
" " 앞과 " " 뒤의;
모든 항목을 제거합니다 . (sed -e 's/.*blah://' -e 's/;.*//'
이해를 돕기 위해 이를 사용할 수 있습니다.)sort
정렬 라인