GNU/Linux >> Linux の 問題 >  >> Linux

2つのパターンの間(およびそれを含む)の線を印刷しますか?

CKのある行からgrepを開始したい 行の終わりで、行に Dがあるときにgrepを停止します 最後に。 grep "$ CK" "$ D" file..txtを試しました 、しかしそれは機能しませんでした。

入力:

kkkkkkkkkkk   
jjjjjjjjjjjjjjjjjj  
gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D  
GGGGGGGGGGGGGG  
GGGGGGGGGGGGGG

目的の出力:

gggggggggggg/CK  
JHGHHHHHHHH   
HJKHKKLKLLL   
JNBHBHJKJJLKKL  
JLKKKLLKJLKJ/D

承認された回答:

awkまたはsedを使用することをお勧めします

awk '/CK$/,/D$/' file.txt

または

sed -n '/CK$/,/D$/p' file.txt

grepを主張する場合は、ここにGNUgrepの方法があります

grep -oPz '(?s)(?<=n)N+CKn.*?D(?=n)' file.txt

ここ

-P perl-regexpをアクティブにします

-z 行区切り文字をNULに設定します。これにより、grepはファイル全体を1行として表示します

-o 一致するものだけを印刷します

(?s) PCRE_DOTALLをアクティブにするため、 任意の文字または改行を検索します

N 改行以外のものと一致します

。*? を見つけます。非貪欲モード

(?<=..) 後読みアサーションです

(?=..) 先読みアサーションです


Linux
  1. それらを含む2つのパターン間の最初の発生を選択する方法は?

  2. ファイル(タブとスペースを含む)から空白行を削除する方法は?

  3. 各50行から15行目と25行目を印刷する方法は?

  1. 2つのファイル間の共通行?

  2. 最初と最後の行なしでファイルコンテンツを印刷しますか?

  3. 2つの特定の行の間にテキストを抽出しますか?

  1. ファイルからGrepパターンを読み取る?

  2. デバイスファイルとデバイスドライバーの違い

  3. デバイスファイルとデバイスドライバーの違い