行の先頭には、「Result:」という文字列を1回だけ含むファイル(file_name)があります。 「.」が表示されるまで、その行の「Result:」文字列の後に続くすべての文字を印刷したいと思います。特徴。どのシェルコマンドを使用する必要がありますか?
答え1
Perl正規表現を実行する最新バージョンのGNU grepは、次のことを行います。
grep -P -o '^Result: \K[^.]*'
-o
行の一致する部分だけを印刷するようにgrepに指示します。正規表現の-P
with は\K
幅 0 の LookBehind アサーションなので、前のコンテンツが一致項目\K
(幅 0) の一部にならないようになります。
答え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 ソリューションの背景知識を得る。