2017-12-25 9 views
-1

ファイルが100行以上あります。1行に2つの文字列をスペース区切り文字と2つの文字列の間に印刷する方法

しかし、一部の行だけがabcのような特定のパターンを持っています。

私の質問は、私は二つのことは、パターンabcを持っているラインの

  1. 第五の単語を印刷したいということです。

  2. 2つの異なる文字列の間の単語(xxx, yyy)

言ってやる例えば、私のファイルは、以下の内容があります。

これは最初の行です。

第2行は、第1セパレータとしてxxx、第2セパレータとしてyyyを持つabcパターンを持っています。

これは3行目です。

再び、4行目は、同じパターンabcとセパレータxxxyyyを使用しています。

など。

必要な出力は以下のようである:第一セパレータと同じ と

として

パターンIは、Linuxに多くの方法を試みたが、私は、コンテンツを第5ワードを印刷することができた場合xxxyyyの間で印刷することができず、その逆もありません。

誰でも私を助けてくれますか?

+3

Linuxは言語ではありません。あなたはあなたの "必要な出力"を表示していないし、問題を解決しようとする試みもありません。 –

答えて

0

私はあなたの質問に答えてみましょう:


私の質問は、私は二つのことは、パターンabcを持っているラインの

  1. 第五の単語を印刷したいということです。

  2. 2つの異なる文字列の間の単語(xxx, yyy)


あなたの質問に両方の部分のためのawkを使用することができます。

  1. awk '/abc/{print $5}' INPUT_FILE。TXT
  2. awk '/xxx.*yyy/{if(match($0,"xxx.*yyy)){print substr($0,RSTART,RLENGTGH)}}' input_file.txt

あなたが1つのコマンドで両方の要件を結合する必要がある場合:

awk '/abc/{print $5} /xxx.*yyy/{if(match($0,"xxx.*yyy)){print substr($0,RSTART,RLENGTGH)}}' 

OUTPUT

pattern 
xxx as first separator and yyy 
same 
xxx and yyy 
関連する問題