格式:
[词目] {} “UC(ICL>限制)”(属性);(光泽)
testme.txt文件有2行
[testme] {} "acetify" (V,lnk,CJNCT,AJ-V,VINT,VOO,VOO-CHNG,TMP,Vo) <H,0,0>;
[newtest] {} "acid-fast" (ADJ,DES,QUAL,TTSM) <H,0,0>;
预期的输出是:
testme = acetify
newtest = acid-fast
到目前为止我所取得的成就是:
cat testme.txt | sed's / [// g'| sed's /] // g'| sed's / {} / = / g'| sed's / \“//'
testme = acetify" (V,lnk,CJNCT,AJ-V,VINT,VOO,VOO-CHNG,TMP,Vo) <H,0,0>;
newtest = acid-fast" (ADJ,DES,QUAL,TTSM) <H,0,0>;
如何删除第二个“到行尾的所有文字?
。”答案 0 :(得分:1)
在双引号空格打开括号" (
后删除所有内容:
sed 's/" (.*//g'
答案 1 :(得分:1)
使用awk
:
awk 'NF > 0 { print $1 " = " $3 }' testme.txt | tr -d '[]"'
答案 2 :(得分:1)
这是你用awk而不是所有那些sed
命令的方法,这是不必要的。你想要的是字段1和字段3.使用gsub()
删除引号和括号
$ awk '{gsub(/\"/,"",$3);gsub(/\]|\[/,"",$1);print $1" = "$3}' file
testme = acetify
newtest = acid-fast
答案 3 :(得分:1)
您对sed
的多次调用的整个序列可以替换为:
sed 's/\[\([^]]*\)][^"]*"\([^"]*\).*/\1 = \2/' inputfile