Awk 如何在分隔文件中提取固定长度的文本
我想从带分隔符的文件中提取一个字段 下面是我文件的内容-Awk 如何在分隔文件中提取固定长度的文本,awk,sed,cut,Awk,Sed,Cut,我想从带分隔符的文件中提取一个字段 下面是我文件的内容- A,B,C,"01/02/2015,01/03/2016,02/26/2017",01,56 A,B,G,"01/02/2012,01/03/2011,02/26/2010",01,56 我只想检索每行中的第一个日期,并用该值替换整个列 输出 A,B,C,01/02/2015,01,56 A,B,G,01/02/2012,01,56 我知道我可以将s中的值拆分为逗号分隔的值,但不确定如何仅限制第一个值而忽略其他值 请引导我做这件事 s
A,B,C,"01/02/2015,01/03/2016,02/26/2017",01,56
A,B,G,"01/02/2012,01/03/2011,02/26/2010",01,56
我只想检索每行中的第一个日期,并用该值替换整个列
输出
A,B,C,01/02/2015,01,56
A,B,G,01/02/2012,01,56
我知道我可以将s中的值拆分为逗号分隔的值,但不确定如何仅限制第一个值而忽略其他值
请引导我做这件事
sed 's/"\([^,]*\)[^"]*"/\1/'
也就是说,找到一个双引号,记住它后面的逗号,然后用记住的部分替换它后面的双引号
有关CSV的更重要的工作,请参阅Perl和。考虑到您的输入文件与所示示例相同,如果是,则遵循
awk
可能会在相同方面帮助您
awk -F',|"' '{print $1,$2,$5,$(NF-1),$NF}' OFS=, Input_file
输出如下
A,B,01/02/2015,01,56
A,B,01/02/2012,01,56
说明:
-F',|“'
:为此处输入文件的每一行设置字段分隔符为,
或“
print
:print
是现成的awk
关键字,用于打印行/变量等
$1、$2、$5、$(NF-1)、$NF
:打印$1
(当前行的第一个字段)、$2
(当前行的第二个字段)、$5
(当前行的第五个字段)、$(NF-1)
(当前行的第二个字段)和$NF
(当前行的最后一个字段)
OFS=,
:在此处将输出字段分隔符设置为逗号
Input\u file
:在这里提到输入文件名。请记住,字段4是空的,因为它位于,“
@kvantour之间,我没有提到代码中的第4列。我知道,如果有人想知道为什么$5
,而不是$4
,如果你希望你也可以在gawkawk'{print gensub(/“([^,]*)./”、“\\1”、“)}文件中添加这一点,那么这是一条一般性的评论,表明了这一微妙之处