使用 sed 删除所有文本

发布于 2024-09-07 04:30:09 字数 666 浏览 1 评论 0原文

格式:

[Headword]{}"UC(icl>restriction)"(Attributes);(gloss)

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/{}/=/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>;

如何删除从第二个 " 到行尾的所有文本?

Format:

[Headword]{}"UC(icl>restriction)"(Attributes);(gloss)

The testme.txt file has 2 lines

[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>;

The expected output is this:

testme = acetify
newtest = acid-fast

What I have achieved so far is:

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>;

How do I remove all the text from the second " to the end of the line?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

筱武穆 2024-09-14 04:30:09

删除双引号空格开括号 " (:

sed 's/" (.*//g'

Remove everything after the doublequote-space-openparenthesis " (:

sed 's/" (.*//g'
是你 2024-09-14 04:30:09

使用 awk 整个过程可能会更快一些:

awk 'NF > 0 { print $1 " = " $3 }' testme.txt | tr -d '[]"'

The whole process might be a little quicker with awk:

awk 'NF > 0 { print $1 " = " $3 }' testme.txt | tr -d '[]"'
善良天后 2024-09-14 04:30:09

这就是使用 awk 而不是所有那些 sed 命令的方法,这是不必要的。您想要的是字段 1 和字段 3。使用 gsub() 删除引号和括号

$ awk '{gsub(/\"/,"",$3);gsub(/\]|\[/,"",$1);print $1" = "$3}' file
testme = acetify
newtest = acid-fast

this is how you do it with awk instead of all those sed commands, which is unnecessary. what you want is field 1 and field 3. use gsub() to remove the quotes and brackets

$ awk '{gsub(/\"/,"",$3);gsub(/\]|\[/,"",$1);print $1" = "$3}' file
testme = acetify
newtest = acid-fast
涫野音 2024-09-14 04:30:09

sed 的多次调用的整个序列可以替换为:

sed 's/\[\([^]]*\)][^"]*"\([^"]*\).*/\1 = \2/' inputfile

Your whole sequence of multiple calls to sed can be replaced by:

sed 's/\[\([^]]*\)][^"]*"\([^"]*\).*/\1 = \2/' inputfile
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文