如何捕获特定字符串的行内容?

如何捕获特定字符串的行内容?

我有这个输出:

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)|^.*'
  • -P使用 Perl 正则表达式功能(更强大,gnugrep)
  • -o仅打印匹配行的匹配(非空)部分
  • ^.*(?=\(BST)找到一个字符序列,后跟(BST右前瞻
  • | 或者 ...
  • ^.*任何其他字符序列

答案3

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

相关内容