如何使用多个定界符从文件中删除特定列

时间:2018-07-09 06:00:49

标签: linux unix

我有一个以下格式的文件。

Input File
-----------
01$@!AA$@!Team1$@!01-JUN-2018$@!City2
01$@!AA$@!Team1$@!01-JUL-2018$@!City2
02$@!BB$@!Team2$@!10-JUN-2018$@!City1
02$@!BB$@!Team2$@!10-JUL-2018$@!City1

我想基于定界符($ @!)删除文件中的第3列和第5列。

Output File
-----------
01$@!AA$@!01-JUN-2018
01$@!AA$@!01-JUL-2018
02$@!BB$@!10-JUN-2018
02$@!BB$@!10-JUL-2018

我尝试使用cut命令。使用一个定界符($)可以正常工作,这里我正在使用定界符($ @!)。

1 个答案:

答案 0 :(得分:5)

这是一个例子。您可以将字段分隔符设置为$ @!然后打印所需的字段编号(以FS作为分隔符)。这将打印字段1、2和4,不包括3和5:

awk -F'\\$@!' '{print $1 "$@!" $2 "$@!" $4}'

因此,使用您的输入文件,输出将是:

01$@!AA$@!01-JUN-2018
01$@!AA$@!01-JUL-2018
02$@!BB$@!10-JUN-2018
02$@!BB$@!10-JUL-2018