параметры awk и разделения поля - PullRequest
0 голосов
/ 23 октября 2018

У меня есть такой файл

fld1="the farm 10" fld3="the farm 1.0" img="https://urlshortener/45R6wmN.png" titlefld4="draw4"
fld1="testing explosives" fld3="testing explosives v15" img="https://urlshortener/45R6wmN.png" titlefld4="draw4"
fld1="law cases" fld3="law cases v5" img="https://urlshortener/45R6wmN.png" titlefld4="draw4"
fld1="history trails" fld3="history trails v4 " img="https://urlshortener/vrjnrethrt.png" titlefld4="draw4"
fld1="climbing dumber" fld3="climbing dumber v1.2" img="https://urlshortener/ervwyntuny.png" titlefld4="draw4"
fld1="pluming 4 dumbs" fld3="pluming 4 dumbs v2.0" img="https://urlshortener/rthvbyh.png" titlefld4="draw4"

, что мне нужно, чтобы ввести эту информацию в базу данных, поэтому мне нужно разделить поля.логика заключается в том, что поле начинается с некоторого текста (имя поля) и заканчивается после 2-го «желаемого вывода 1-й строки с использованием | в качестве разделителя полей (все, что будет делать)

fld1="the farm 10"|fld3="the farm 1.0"|img="https://urlshortener/45R6wmN.png" titlefld4="draw4"

попробуйте использовать awk awk -v OFS="|" '{$1=$1}1' но он разделяется на все пробелы

как мне этого добиться (awk, sed или что-то еще для компиляции автоматизированного скрипта ...)

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Используйте GNU awk следующим образом:

awk 'BEGIN { FPAT="[^= ]+=\"[^\"]+\""; OFS="|" } { $1=$1 } 1'
0 голосов
/ 23 октября 2018

Это может работать для вас (GNU sed):

sed -r 's/(\S+="[^"]*")\s+/\1|/g' file

Это заменяет пробел (ы) после поля на | глобально по всему файлу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...