基于 awk 中的字段值进行过滤

Kas*_*ino 4 awk text-processing

to我想打印后面有的国家~:

welcome~:to~:Germany
welcome~:no please~:Italy
welcome~:to~:Brazil
welcome~:not ok~:China
Run Code Online (Sandbox Code Playgroud)

注:我不知道除了“ to”之外还会有什么。它可以是任何内容并且可以更改(例如no please, not ok)。

我尝试使用 cut、awk、sed。但我无法弄清楚。

awk -F "~:" '{print $2 $NF}'
Run Code Online (Sandbox Code Playgroud)

但我得到的输出如下:

toGermany
no pleaseItaly
toBrazil
not okChina
Run Code Online (Sandbox Code Playgroud)

如何过滤to.以外的国家/地区

更新:

替代解决方案:(通过剪切找出):-)

grep -v "to" |cut -d ':' -f3 
Run Code Online (Sandbox Code Playgroud)

tal*_*zin 5

当您使用~:作为字段分隔符时,您可以检查第二个字段是否等于to并打印第三个字段,即国家/地区:

awk -F"~:" '$2 == "to" { print $3; }' file
Run Code Online (Sandbox Code Playgroud)

结果:

Germany
Brazil
Run Code Online (Sandbox Code Playgroud)