我想从分隔文件中提取字段。
以下是我文件的内容 -
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中的值拆分为逗号分隔值,但不确定如何仅限制第一个值并省略其他值。
请指导我。
答案 0 :(得分:3)
sed 's/"\([^,]*\)[^"]*"/\1/'
即。找到一个双引号,记住它后跟逗号的内容,并用记住的部分将其替换为以下双引号。
有关使用CSV进行更严肃的工作,请参阅Perl和Text::CSV_XS。
答案 1 :(得分:0)
考虑到您的Input_file与显示的示例相同,如果是,那么关注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',|"'
:在此处为每行Input_file设置字段分隔符为,
或"
。
print
:print
是开箱即用的awk
关键字,用于打印行/变量等。
$1,$2,$5,$(NF-1),$NF
:打印$1
(当前行的第一个字段),$2
(当前行的第二个字段),$5
(当前行的第五个字段),{ {1}}(seconf当前行的最后一个字段)和$(NF-1)
(当前行的最后一个字段)。
$NF
:在此处将输出字段分隔符设置为逗号。
OFS=,
:这里提到输入文件名。