他のフィールドの値に基づいてフィールドの値を見つけて置き換える方法は?

他のフィールドの値に基づいてフィールドの値を見つけて置き換える方法は?

このようなファイルがあります。

IMS00|20140101|Unix|Jan14
IMS01|20140201|Unix|Feb14
IMS02|20140301|Unix|Mar14
IMS03|20140101|Unix|Jan14
IMS04|20140201|Unix|Feb14

私の基準は、列1の値がある場合はIMS00列4の値をJan14に置き換え、Jan15 列1の値がある場合はIMS01列4の値をFeb14に置き換える必要があることですFeb15

これはどのように達成できますか?

ベストアンサー1

あなたの質問は非常に明確ではありません。たとえば、あなたが書いたコードでは、ドットとして後でIMS00呼び出されます。また、代わりにIMS.00列数を変更することも可能でなければなりません。とにかく、あなたは探しているでしょう43

awk 'BEGIN{FS=OFS="|"}$1=="IMS00"{$4="Jan15"}$1=="IMS01"{$4="Feb15"}1' file

このBEGINブロックは最初に一度だけ実行され、フィールド区切り記号FSと出力フィールド区切り記号OFSをに設定します|。結局、すべてを印刷します1

おすすめ記事