1

.txt検索および抽出プログラムの出力として生成されたディレクトリファイルがあります。.txtファイルは以下の形式です。

キーワードに基づいて、後処理ステップとしてEntrust以下の行を削除しようとしています 。sed

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

シェル スクリプトで実行しているコマンドは次の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>
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 に答える
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 に答える
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 に答える