$ 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
С помощью awk
вы можете определить несколько разделителей полей с помощью -F '[]'
, так что вы можете определить обе фигурные скобки в качестве разделителей и напечатайте второе поле:
awk -F'[{}]' '{print $2}' input.csv
1,2,3
3,9,1
10,12,30