awk 和字段拆分参数
awk and field splitting parameters
我有一个这样的文件
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'
但它会在每个 space
上拆分
我怎样才能做到这一点(awk、sed 或任何其他编译自动化脚本的...)
这可能适合您 (GNU sed):
sed -r 's/(\S+="[^"]*")\s+/|/g' file
这将在整个文件中全局用 |
替换字段后的 space(s)。
以这种方式使用 GNU awk:
awk 'BEGIN { FPAT="[^= ]+=\"[^\"]+\""; OFS="|" } { = } 1'
我有一个这样的文件
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'
但它会在每个 space
我怎样才能做到这一点(awk、sed 或任何其他编译自动化脚本的...)
这可能适合您 (GNU sed):
sed -r 's/(\S+="[^"]*")\s+/|/g' file
这将在整个文件中全局用 |
替换字段后的 space(s)。
以这种方式使用 GNU awk:
awk 'BEGIN { FPAT="[^= ]+=\"[^\"]+\""; OFS="|" } { = } 1'