вырезать столбец массива в csv [duplicate]

-2
20.10.2016, 11:41
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} первые два столбца
  • «\ { соответствуют » { в третьем столбце, не захвачены
  • ([^} ] +) захватывает не } символы
  • . * остальная часть строки
  • заменяет всю строку требуемой строкой


с помощью grep и ] pcre

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

С помощью awk вы можете определить несколько разделителей полей с помощью -F '[]' , так что вы можете определить обе фигурные скобки в качестве разделителей и напечатайте второе поле:

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

Теги

Похожие вопросы