如何在 csv 文件中分隔如下行:
(12,'hello','this girl,is lovely(adorable \r\n actually)',goodbye),(13,'hello','this fruit,is super tasty (sweet actually)',goodbye)
到下面作为2个不同的行:
(12,'hello','this girl,is lovely(adorable \r\n actually)',goodbye)
(13,'hello','this fruit,is super tasty (sweet actually)',goodbye)
我尝试使用:
awk -F"[()]" '{print $2}' test.csv
但它没有用,丢失了几行。
该数据实际上是一个 SQL 查询,我需要提取数据并使用逗号 after ) 和 before ( 作为行分隔符将其转换为不同的行
使用 GNU
sed
(并且您的示例输入保存在名为 的文件中./input
):这会将每个中的逗号更改
),(
为换行符。警告:如果该字符序列出现在您的实际数据中,它也会在那里更改。
您可以在 中做同样的事情
awk
,但与使用相比几乎没有优势sed
:除非您要对需要
awk
特征的输入行进行进一步处理,否则只需使用sed
.这个 awk 命令可以做你想做的事:
结果:
cat test.csv | tr -d "()" | sed 's/goodbye/goodbye\n/g'
sed 's/goodbye/\n/g'
您可以用“g”排除再见是用所有行来做,而不仅仅是第一个匹配。tr
删除括号是可选的(您可以使用 tr 将它们翻译成其他东西而不删除它们)在python中尝试过
输出