大きなファイルには2つの列があり(または2つのファイルに分割できます)、州/地域の列から重複した都市名を削除する必要があります。
los angeles los angeles ca, usa, west
new york new york ny, usa, east
vancouver vancouver bc can, west
...
最初の列を変数とパターンの一致にし、2番目の列から削除できますか?
答え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)
$2から$1の検索回数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