パターンに一致する行の一部を返します。

パターンに一致する行の一部を返します。

行の先頭には、「Result:」という文字列を1回だけ含むファイル(file_name)があります。 「.」が表示されるまで、その行の「Result:」文字列の後に続くすべての文字を印刷したいと思います。特徴。どのシェルコマンドを使用する必要がありますか?

答え1

Perl正規表現を実行する最新バージョンのGNU grepは、次のことを行います。

grep -P -o '^Result: \K[^.]*'

-o行の一致する部分だけを印刷するようにgrepに指示します。正規表現の-Pwith は\K幅 0 の LookBehind アサーションなので、前のコンテンツが一致項目\K(幅 0) の一部にならないようになります。

また見なさい:grepは指定されたグループに一致する出力のみを出力できますか?

答え2

あなたはそれを使用することができますsed。このように:

sed -e 's/Result:\(.*\)\..*$/\1/g' file_name

同じファイルに結果を保存したい場合は、パラメータ-iに追加できます。sed

答え3

<file_name sed -n 's/^Result: \([^.]*\)\..*/\1/p'
<file_name awk '/^Result:.*\./ {sub(/^Result: /,""); sub(/\..*/, ""); print}'
<file_name grep '^Result: .*\.' | sed 's/^Result: //' | sed 's/\..*//'

.aの存在が不要な場合は、次のように変更します。

<file_name sed -n -e 's/\..*//' -e 's/^Result: //p'
<file_name awk '/^Result: / {sub(/^Result: /,""); print}'
<file_name grep '^Result: ' | sed 's/^Result: //'

バラよりこの回答sed ソリューションの背景知識を得る。

関連情報