awk의 필드 값을 기준으로 필터링

awk의 필드 값을 기준으로 필터링

to뒷면에 국가를 인쇄하고 싶습니다 ~:.

welcome~:to~:Germany
welcome~:no please~:Italy
welcome~:to~:Brazil
welcome~:not ok~:China

to참고: " " 외에 무엇이 있는지 모르겠습니다 . 무엇이든 될 수 있으며 변경될 수 있습니다(예 no please: , not ok).

나는 cut, awk, sed를 사용해 보았습니다. 그러나 나는 그것을 알아낼 수 없습니다.

awk -F "~:" '{print $2 $NF}'

그러나 내가 얻는 결과는 다음과 같습니다.

toGermany
no pleaseItaly
toBrazil
not okChina

to이외의 국가 를 필터링하는 방법

고쳐 쓰다:

대체 솔루션: (잘라내서 알아보세요) :-)

grep -v "to" |cut -d ':' -f3 

답변1

필드 구분 기호로 사용하면 ~:두 번째 필드가 동일한지 확인 to하고 국가인 세 번째 필드를 인쇄할 수 있습니다.

awk -F"~:" '$2 == "to" { print $3; }' file

결과:

Germany
Brazil

답변2

sed해결책을 잊지 마세요 :

sed -n '/~:to~:/s/.*://p'

또는 더 빠르게 (아마도)

sed '/~:/{s/to~:/\n/;D}'

관련 정보