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


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'


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

я не хочу захватывать что-либо после определенной строки, которая является (BST)
Nick_baba

Ответы:



2
 ... | grep -Po '^.*(?=\(BST)|^.*'
  • -P использовать функциональность регулярных выражений Perl (more powferfull, gnugrep)
  • -o печатать только совпадающие (непустые) части совпадающей строки
  • ^.*(?=\(BST)найти последовательность символов, за которой следует (BSTправый взгляд
  • | или же ...
  • ^.* любая другая последовательность символов

Не могли бы вы объяснить это выражение?
Архемар

@ Архемар, хорошая идея ☺.
Жоао

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

Я редактировал это, вы можете попробовать это сейчас, пожалуйста?
Виссам Ружула
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.