特定の文字列の行の内容をキャプチャする方法は?

特定の文字列の行の内容をキャプチャする方法は?

私は次のような結果を得ました。

Never logged in.
Last login Wed Jun 22 15:12 2016 (BST) on pts/11 from host1

(BST) on pts/11 from host1 これがなければ必要です。

Never logged in.
Last login Wed Jun 22 15:12 2016 

私の現在のコマンドは./lastlog.sh | xargs -n1 finger | grep -i 'Never\|Last'

答え1

./lastlog.sh | xargs -n1 finger | grep -i 'Never\|Last' | sed -e 's/ (.*$//'

答え2

 ... | grep -Po '^.*(?=\(BST)|^.*'
  • -PPerlの正規表現機能の使用(より強力、gnugrep)
  • -o一致する行の一致する(空でない)部分のみを印刷します。
  • ^.*(?=\(BST)(BST右の予測が続く一連の文字を探す
  • | または...
  • ^.*その他の文字シーケンス

答え3

./lastlog.sh | xargs -n1 finger | grep -i 'Never\|Last' | awk -F'(' '{print $1}'

関連情報