列の特定の部分を省略する - awk

列の特定の部分を省略する - awk
  • 各行はセミコロンを使用して部分で区切られます。

  • 各セクションにはさまざまな形式の日付があります。

  • 行には数字、文字、スペースを含めることができます。

パート6で日付形式を変更しようとしています。現状はそうです

12 Nov 1999 

しかし、私はその年が必要です。それでは、他の部分に触れることなく、行の6番目の部分から仕事と月をどのように省略できますか?

12/31/1921;12 nov 1998; 13 September 2019; 13 Sep 2018; 12 August 1998; 12 Nov 1999; 27 November 1999; 13 Dec 1999; 14 December 1999; 15 D 1999

こうなる

12/31/1921;12 nov 1998; 13 September 2019; 13 Sep 2018; 12 August 1998;1999; 27 November 1999; 13 Dec 1999; 14 December 1999; 15 D 1999

答え1

awk -F ';' 'BEGIN { OFS=FS } { sub(".* ", "", $6); print }' file

上記は、各行を区切られた一連のfileフィールドに解析します。;各行の6番目のフィールドを変更する置換を適用します。変更には、フィールドデータのすべての内容を最後の空白文字まで削除する操作が含まれます。 6番目のフィールドを変更したら、変更された行を印刷します。

答え2

awkとともにsubstr機能:

awk -F';' '{ $6 = substr($6, length($6)-3) }1' OFS=';' inputfile

関連情報