省略列的特定部分 - awk

省略列的特定部分 - awk
  • 每行都用分号分隔成多个部分

  • 每个部分都有不同格式的日期

  • 行可以包含数字、字母和空格。

我正在尝试更改第六部分中日期的格式。目前是这样的

12 Nov 1999 

但我只需要年份。那么我怎样才能省略行的第六部分中的日期和月份而不触及其他部分

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个字段后,打印修改后的行。

答案2

awksubstr功能:

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

相关内容