我有一個長文件名爲test,看起來如下工作:如何只替換文件中的特定列?
AHAP USA|NIS00333|+NULL|NISGOOGLE|NIS00005|*binary|NISCAR
KJJLIL123124%|NIS00160|+NULL|NISFACEBOOK|NIS00006|*binary|NISBUR
ASFASS9992|NIS00164|+NULL|NISTABLE|NIS00008|*binary|NISFANCY
我需要進行替換字符串「NIS」到「NIX」,但是,我只需要在第二個欄來實現這一這是由管道字符分隔,我的數據分隔符是管道「|」,我有幾列,總共七個,我只是想做第二個替換。
我想:
$ sed s/NIS/NIX/g test
AHAP USA|NIX00333|+NULL|NIXGOOGLE|NIX00005|*binary|NIXCAR
KJJLIL123124%|NIX00160|+NULL|NIXFACEBOOK|NIX00006|*binary|NIXBUR
ASFASS9992|NIX00164|+NULL|NIXTABLE|NIX00008|*binary|NIXFANCY
但它影響到所有與該字符串匹配的列:NIS,並更改爲NIX,我只是想影響第二列,我需要的輸出將是:
AHAP USA|NIX00333|+NULL|NISGOOGLE|NIS00005|*binary|NISCAR
KJJLIL123124%|NIX00160|+NULL|NISFACEBOOK|NIS00006|*binary|NISBUR
ASFASS9992|NIX00164|+NULL|NISTABLE|NIS00008|*binary|NISFANCY
我真的很感謝這個問題的幫助,謝謝任何如何。
謝謝,我真的很感謝這個建議,我會考慮用awk代替sed來處理列,只是多一個問題,代替awk的替換是什麼,我的意思是如果你使用sed,你可以使用sed -i來實現在同一個文件中改變,你知道awk的等價物嗎? – neo33
@ neo33你可以使用GNU awk 4.1.0中的'-i inplace'。否則,訣竅始終是'awk'...'file> tmp_file && mv tmp_file file'。所有這些都在[awk save modifications inplace]中描述(http://stackoverflow.com/a/16529730/1983854)。 – fedorqui
是的,我非常感謝支持,這真的很有幫助。 – neo33