我在一个大文件中有两列(或者可以分开为两个文件),我需要删除州/地区列中重复的城市名称。
los angeles los angeles ca, usa, west
new york new york ny, usa, east
vancouver vancouver bc can, west
...
我可以以某种方式将第一列作为变量和模式匹配并从第二列中删除吗?
答案1
使用awk
, 和输入文件
los angeles los angeles ca, usa, west
new york new york ny, usa, east
vancouver vancouver bc can, west
paris france paris, europe
berlin germany berlin
mardrid ola, spain
其中列正确地用制表符分隔。
awk -F\\t '{if (i=index($2,$1)) $2=substr($2,0,i-1) substr($2,i+length($1)) ; print }' u
在哪里
-F\\t
使用制表符作为分隔符i=index($2,$1)
$1 在 $2 中的搜索次数if ( )
如果发现..$2=substr($2,0,i-1) substr($2,i+length($1))
将 $2 替换为删除 $1 的子字符串(假设仅出现一次 $1)print
打印结果
结果
los angeles ca, usa, west
new york ny, usa, east
vancouver bc can, west
paris france , europe
berlin germany
mardrid ola, spain