我有一个目录.txt
文件作为搜索和提取的输出生成
程序。 .txt
文件采用以下格式。
根据关键字Entrust
,我正在尝试删除以下行
sed
作为后处理步骤。
<content>This document has been digitally signed with external signatures using Entrust PKI</content>
我在shell脚本中运行的sed
命令如下:注意到没有从.txt文件中删除任何行。
sed
可以根据代码中的内容进行搜索和删除吗?还有其他办法吗?
sed '/Entrust/d' $file > ${file}.mod;
<block>
<title>
This is the title
</title>
</block>
<block>
<content>
Content1
</content>
</block>
<block>
<title>
Title 2
</title>
<content>
some content 2
</content>
</block>
<block>
<title>
Title 3
</title>
<content>
some content 3
</content>
<content>
This document has been digitally signed with external signatures using Entrust PKI
</content>
<content>
some content4
</content>
<content>
This document has been digitally signed with external signatures using Entrust PKI
</content>
</block>
答案 0 :(得分:1)
据我了解,您正试图从txt文件中删除。我会建议sed -i
。您应该使用命令
${file}.mod
中删除所需的行
sed -i '/Entrust/d' $file
答案 1 :(得分:1)
您可以尝试:
sed -n '/Entrust/!p' $file > ${file}.mod
或强>
sed '/Entrust/d' $file > ${file}.mod
awk '!/Entrust/' $file > ${file}.mod
答案 2 :(得分:0)
sed -i 's/<content>This document has been digitally signed with external signatures using Entrust PKI</content>/#<content>This document has been digitally signed with external signatures using Entrust PKI</content>/g' $filename
这是您可以注释脚本不会注意/读取的行的方式。
答案 3 :(得分:0)
perl -lne 'print unless(/\bEntrust\b/)' your_file.txt > your_file.mod
答案 4 :(得分:0)
要搜索XML样式标记之外的文本,请使用以下命令;
sed '/^\([^<]*\(<[^<>]*>\)*\)*Entrust/d'
这是一个例子;
$ cat tmp.txt
some content 2.
some content with Entrust.
<tag type='Entrust'/>
<tag>Entrust</tag>
$ sed '/^\([^<]*\(<[^<>]*>\)*\)*Entrust/d' tmp.txt
some content 2.
<tag type='Entrust'/>
请注意,此表达式不处理包含换行符的标记。