Как извлечь одно значение из однострочных кортежей?

У меня есть дамп-файл базы данных в следующем виде

('value1','value2',value3','value4'),('value1','value2',value3','value4'),... 

Сначала я хочу иметь каждый кортеж в одной строке, а затем я хотел бы экспортировать только одно значение (то есть: value3 из каждого кортежа)

Помещение каждого кортежа на отдельную строку:

 sed 's@)\s*,\s*(@)\n(@g' your_file 

Чтобы применить изменения к файлу (вместо того, чтобы печатать измененный файл в stdout):

 sed -i 's@)\s*,\s*(@)\n(@g' your_file 

Чтобы сообщить только value3 (при условии изменения файла):

 awk -F',' '{print $3}' <your_new_file 

Это предполагает, что сами значения не содержат. См. Комментарий Майкла ниже.

Чтобы сделать это за один раз (без изменения файла):

 sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $3}' 

Чтобы упростить вышеупомянутый вызов awk , я воспользовался тем фактом, что, учитывая ваш пример, мы можем разделить вход , а value3 будет третьим значением и не будет иметь в нем никаких парнеров. Если бы вы хотели value1 value4 или value4 , вы можете сделать что-то вроде:

 sed 's@)\s*,\s*(@)\n(@g' your_file | awk -F',' '{print $1}' | sed 's/[()]//' 

Это, конечно же, предполагает, что ваши ценности не содержат парнеров в их содержании.