У меня есть файл, который постоянно пишется / обновляется. Я хочу найти последнюю строку, содержащую определенное слово, а затем распечатать последний столбец этой строки.
Файл выглядит примерно так. Со временем к нему будут добавлены новые строки A1 / B1 / C1.
A1 123 456
B1 234 567
C1 345 678
A1 098 766
B1 987 6545
C1 876 5434
Я пытался использовать
tail -f file | grep A1 | awk '{print $NF}'
для печати значения 766, но ничего не выводится.
Есть ли способ сделать это?
tail
дает вам raw . Было бы безопаснее, если вы не знаете, что он будет появляться с определенной частотойawk '/A1/ {print $NF}' file | tail -n1
.Чтобы напечатать последний столбец строки, просто используйте $ (NF):
источник
Один из способов использования
awk
:источник
awk
загадочный синтаксис :)Вы можете сделать это без awk, используя лишь несколько каналов.
источник
может это работает?
источник
Вы можете сделать все это в
awk
:источник
Использование Perl
источник
perl -lane 'print $F[2] if /A1/' rayne.txt
awk -F " " '($1=="A1") {print $NF}' FILE | tail -n 1
Используйте
awk
с разделителем полей -F, установленным на пробел "".Используйте шаблон
$1=="A1"
и действие{print $NF}
, это напечатает последнее поле в каждой записи, где первое поле - «A1». Вставьте результат в хвост и используйте-n 1
опцию, чтобы показать только последнюю строку.источник
Выполните это в файле:
и вы получите то, что ищете.
источник
Это не настоящая проблема, но может помочь кому-то: я делал
awk "{print $NF}"
, обратите внимание на неправильные цитаты. Должно бытьawk '{print $NF}'
, чтобы оболочка не расширялась$NF
.источник
ls -l | awk '{print $9}' | tail -n1
источник