grep/awk 세 번째 열에는 문자열이 포함되어 있습니다.

grep/awk 세 번째 열에는 문자열이 포함되어 있습니다.

문자열 예

blah:blah:example - 1234
blah1:blah2:example2 - 3213

콘텐츠가 존재하는지 확인하고 싶습니다.

- 1234

하지만 숫자는 다를 수 있습니다

나는 내가 사용할 수 있다는 것을 안다

awk -F: '$3 ~ / - /' 

"-"가 있는지 확인하십시오. 그러나 숫자 가능성을 적용하는 방법은 무엇입니까?

답변1

기본적으로 "-" 뒤에 숫자가 있는지 확인하고 싶습니까?
하고 싶으시면 이렇게 쓰시면 됩니다
awk -F: '$3 ~ / - [0-9]+/'


더욱 발전된 솔루션

마지막 숫자에 가능한 값의 배열(예: 1, 2, 3, 4, 5)이 있는 경우 다음과 같이 작성할 수 있습니다.

values=(1 2 3 4 5)
awk -v vals="$(echo ${values[@]})" \
'{if(match(vals,$3" ")){print $0}}' input_file.txt

이렇게 하면 지정한 배열 input_file.txt의 마지막 숫자가 있는 항목 만 인쇄됩니다.values

답변2

다음 명령은 끝에서 두 번째 공백으로 구분된 열에 a 를 포함하고 마지막 공백으로 구분된 열에 양의 정수를 포함하는 모든 행을 표시합니다 awk.file-

awk '$(NF-1) == "-" && $NF ~ /^[0-9]+$/' file

다음 grep명령은 동일한 작업을 수행합니다.

grep -E -e '-[[:space:]]+[0-9]+$' file

패턴의 수정자를 -E이해하는 데 필요하며 패턴의 수정자를 명령줄 옵션으로 해석하는 것을 중지해야 합니다(명령줄 옵션의 끝을 나타내는 교체로 변경될 수도 있음).+-egrep--e--

관련 정보