1

我有一个.txt作为搜索和提取程序的输出生成的目录文件。该.txt文件采用以下格式。

基于关键字 ,Entrust我正在尝试删除以下行,并将其 sed用作后处理步骤。

<content>This document has been digitally signed with external signatures using Entrust PKI</content>

sed我在 shell 脚本中运行的命令如下:注意到没有从 .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>
4

6 回答 6

1

你可以试试:

sed -n '/Entrust/!p' $file > ${file}.mod

或者

sed '/Entrust/d' $file > ${file}.mod

awk '!/Entrust/' $file > ${file}.mod
于 2013-06-20T05:52:35.607 回答
1

据我了解,您正在尝试从 txt 文件中删除。我会建议sed -i这样做。您应该看到${file}.mod使用命令删除了所需的行

sed -i '/Entrust/d' $file
于 2013-06-20T04:03:04.960 回答
0
perl -lne 'print unless(/\bEntrust\b/)' your_file.txt > your_file.mod
于 2013-06-20T05:12:30.350 回答
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 

这是您可以评论脚本不会注意到/读取的行的方式。

于 2013-06-20T04:49:50.413 回答
0

如前所述,您的文件包含Entrust,但您正在搜索Entrusted

sed '/Entrust/d'
于 2013-06-20T03:23:27.637 回答
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'/>

请注意,此表达式不处理包含换行符的标记。

于 2013-06-20T05:27:20.940 回答