awk和字段分割参数

时间:2018-10-22 22:47:32

标签: database awk sed field awk-formatting

我有一个像这样的文件

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"

我需要的是将此信息输入数据库,所以我需要分隔字段。 逻辑是该字段以一些文本(字段名称)开头,并在第二个“ 第一行的期望输出使用|作为字段分隔符(可以做任何事情)

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 :(得分:1)

这可能对您有用(GNU sed):

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

这会在整个文件中全局用|替换字段后的空格。

答案 1 :(得分:1)

以这种方式使用GNU awk:

awk 'BEGIN { FPAT="[^= ]+=\"[^\"]+\""; OFS="|" } { $1=$1 } 1'