web-dev-qa-db-ja.com

事前定義された文字で開始および終了する行をGrep

ファイルfile.txtから次のような行を取得しようとしています。

>This is line 1.</li>
>This is line 2.</li>
>This is line 3.</li>
>This is line 4.</li>

>で始まり</li>で終わるコンテンツを取得する必要があるため、出力はThis is line 1.This is line 2.などになります。私はフォーラムでこれを調べましたが、解決策が見つかりませんでした。この solution も機能しませんでした。

最終的に、Webページからいくつかの行を取得する必要があります。最初にcurl webpageを実行し、次にgrepコマンドを使用して、>で始まり</li>で終わる行をgrepします。

ありがとう。

2
S Andrew

これで十分です:

grep '^>.*</li>$' input-file

^および$は、これらの部分がそれぞれ行の先頭と末尾でアンカーであることを保証します。

次のこともできます。

grep -x '>.*</li>' input-file

-xは完全に一致するものを探します。行全体がパターンに一致する必要があります(これは^および$がパターンにラップされることを意味します)。

4
Olorin

これは入力ファイルです。

$ cat /tmp/tmp.txt
>This is line 1.</li>
invalid line 1
>This is line 2.</li>
>This is line 3.</li>
invalid line 2

>This is line 4.</li>
last invalid line

grepおよびawkを使用して、必要な文字列を抽出します。

$ cat /tmp/tmp.txt | grep -E '>*</li>' | awk -F\> '{ print $2 }' | awk -F\< '{ print $1 }'
This is line 1.
This is line 2.
This is line 3.
This is line 4.
0
boardrider