Как захватить содержимое строки до определенной строки?

0

У меня есть этот вывод:

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'

Nick_baba
источник
1
По сути, вы не хотите захватывать что-либо после определенной строки (например, "(BST)"), верно? Или вы просто хотите всегда фиксировать ПОЛОВИНУ строки, например, если строка «Последнее рождество», вы бы захватили «Последний канал»?
MatthewRock
я не хочу захватывать что-либо после определенной строки, которая является (BST)
Nick_baba

Ответы:

2
./lastlog.sh | xargs -n1 finger | grep -i 'Never\|Last' | sed -e 's/ (.*$//'
Ипор Сирсер
источник
Небольшое объяснение было бы хорошо.
MatthewRock
2
 ... | grep -Po '^.*(?=\(BST)|^.*'
  • -P использовать функциональность регулярных выражений Perl (more powferfull, gnugrep)
  • -o печатать только совпадающие (непустые) части совпадающей строки
  • ^.*(?=\(BST)найти последовательность символов, за которой следует (BSTправый взгляд
  • | или же ...
  • ^.* любая другая последовательность символов
JJoao
источник
Не могли бы вы объяснить это выражение?
Архемар
@ Архемар, хорошая идея ☺.
Жоао
0
./lastlog.sh | xargs -n1 finger | grep -i 'Never\|Last' | awk -F'(' '{print $1}'
Виссам Ружула
источник
Я попробовал твою команду, но бас-шукран все равно не работал :-)
Nick_baba
@Nick_baba WLC, но не работает ?? какой вывод вы получили из моей команды?
Виссам Ружула
тот же вывод с этим предупреждением: awk: warning: escape-последовательность \(' treated as plain ('awk: warning: escape-последовательность \)' treated as plain )'
Nick_baba
Я редактировал это, вы можете попробовать это сейчас, пожалуйста?
Виссам Ружула