grepを使用して行の最後のアイテムを見つける


12

特定のパターンのgrepを使用して、最後の単語またはフレーズを取得しようとしています。この例では、最後のコンマから行末までになります。

Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value

したがって、その行に必要な出力は「Great Value」になります。すべての行の長さも異なりますが、最後の単語の前には常に単一のコンマがあります。

基本的に、最後のコンマから行末までを単純に出力したいと思います。ありがとうございました!


9
の使用を検討しましたawk -F, '{print $NF}'か?
スチールドライバー

行の最後の項目を取得するのは簡単ですが、その行をどのように識別する必要がありますか?つまり、コマンドやスクリプトはどのようにその行を見て、「うん、これだ」と言うことができるのでしょうか その行を識別するパターンは何ですか?
セルギーKolodyazhnyy

5
grepこのジョブのツールではありません。
クサラナナンダ

回答:


27

ここに:

grep -o '[^,]\+$'
  • [^,]\+,行末にない1つ以上の文字に一致します($

  • -o 一致した部分のみを印刷します

例:

% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

魅力のように働いた!「。」の組み合わせを使用しようとしていました。以前の他の表現がありますが、これは非常に良く機能し、感謝しています。
reversebottle

うーん、私は-Eo逃げる必要はなかったのに+
Baldrickk

@Baldrickk -EはEREを有効にします。そのためです。
-heemayl

@heemaylええ、私はその理由を知っています。私はそれがより一般的な正規表現の構文であるとして、それを使用する傾向がある
Baldrickk

14

常にawk解決策を見たいので、ここにあります(適切な解決策を提示しました!):

% awk -F, '{print $NF}'  <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value

3
これが正解です。grepを使用できますが、ハンマーでネジを打つこともできます。
wilsotc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.