在 csv 中剪切数组列

在 csv 中剪切数组列

我想在 CSV 文件中剪切数组列。例如,如果您看到以下 CSV 文件

输入.csv

1,2,"{1,2,3}",1

3,4,"{3,9,1}",2

8,9,"{10,12,30}",3

我想要的输出为

输出.csv

1,2,3

3,9,1

10,12,30

我尝试使用cut -d , -f 3 input.csv andcut -d { -f 3 input.csv但两者都不起作用。感谢任何帮助。提前致谢。

答案1

awk可以使用 定义多个字段分隔符-F'[]',因此您可以将两个大括号定义为分隔符并打印第二个字段:

awk -F'[{}]' '{print $2}' input.csv
1,2,3
3,9,1
10,12,30

答案2

$ cat input.csv
1,2,"{1,2,3}",1
3,4,"{3,9,1}",2
8,9,"{10,12,30}",3

$ sed -E 's/^([^,],){2}"\{([^}]+).*/\2/' input.csv
1,2,3
3,9,1
10,12,30
  • 某些sed版本用于-r代替-E扩展正则表达式
  • ^([^,],){2}前两列
  • "\{"{第三列匹配,未捕获
  • ([^}]+)捕获非}字符
  • .*其余线
  • 将整行替换为所需的字符串


greppcre

$ grep -oP '^([^,],){2}"\{\K[^}]+' input.csv 
1,2,3
3,9,1
10,12,30

相关内容