我有一個N列的平面文件。我們如何在UNIX shell腳本中對此進行編程?
第N列在不同行中包含幾次「abc」字。
如何將'abc'這個單詞替換爲'def'。
輸出文件應該包含相同的數據,直到'N-1'列,只有在第N列中,單詞'abc'的多個出現應該被更改爲'def'。
請告知如何實現此目的。
問候, 斯里裏
我有一個N列的平面文件。我們如何在UNIX shell腳本中對此進行編程?
第N列在不同行中包含幾次「abc」字。
如何將'abc'這個單詞替換爲'def'。
輸出文件應該包含相同的數據,直到'N-1'列,只有在第N列中,單詞'abc'的多個出現應該被更改爲'def'。
請告知如何實現此目的。
問候, 斯里裏
隨着awk
:
awk 'BEGIN{FS=OFS=":"}{$NF=($NF~/abc/)?"def":$NF}1' your_file
嗨JS非常感謝你的回答,請你給我解釋一下上面的命令,再次感謝你的時間 – srihari
不客氣。 'NF'表示字段的數量。 '$ NF'將代表最後一列。因此,如果我們的最後一列像'abc',我們將其更改爲'def'。如果不是,我們保持原樣。 '1'告訴'awk'打印有或沒有更改的行。 –
是列固定寬度,或用定界符可變寬度?如果有分隔符,它是否也可以出現在字段中(大概是引用或以某種方式轉義)? –
嗨克里斯,分隔符是獨特的':' – srihari
列是可變寬度。數據中不會出現分隔符。謝謝。 – srihari