【发布时间】:2016-09-05 03:39:22
【问题描述】:
我需要在执行替换之前编辑一个 sed 选择...一种嵌套查询
这是 file.csv 的前两行
"some text over one line"||02/21/2015 00:00:00||54.34||0.234
"some text over
multiple
lines"||02/21/2015 00:00:00||64.24||0.432
我想从第一列中删除换行符 - 第一个分隔符 || 之前的所有内容@
此命令收集每一列并允许我单独引用它们
sudo sed -i 's/\(.*\)||\(.*\)||\(.*\)||\(.*\)/\1||\2||\3||\4/g' file.csv
我现在需要在替换之前编辑\1。类似于进一步的 sed 命令 sed -i ':a;N;$!ba;s/\n//g' file.csv - 但仅适用于 \1 而不是整个文件
输出应该是这样的
"some text over one line"||02/21/2015 00:00:00||54.34||0.234
"some text over multiple lines"||02/21/2015 00:00:00||64.24||0.432
【问题讨论】:
-
一定要
sed吗?在awk做会容易得多。 -
我可能会想到
perl和Text::CSV或Text::ParseWords -
不需要sed,我就是这么习惯的。只要可以写回文件,就可以打开任何工作