У меня есть файл настроить какAWK печати Предпоследняя запись файла
Words on
many line
%
More Words
on many lines
%
Even More Words
on many lines
%
, и я хотел бы вывести второй к последнему записи этого файла, в котором запись ограниченного %
после каждого блок текста.
Я использовал:
awk -v RS=\% ' END{ print NR }' $f
найти число записей (1136). Тогда я сделал
awk -v RS=\% ' { print $(NR-1) }' $f
и
awk -v RS=\% ' { print $(NR=1135) }' $f
. Ни один из них не работал, а вместо этого отображал запись в начале файла и множество пустых строк. ВЫВОД:
"You know, of course, that the Tasmanians, who never committed adultery, are
now extinct."
-- M. Somerset Maugham
"The
is
what
that
Этот вывод имел много, много больше пустых строк и содержит запись около середины файла.
awk -v RS=\% 'END{ print $(NR-1) }' $f
возвращает пустую строку. Эта же команда с разными значениями $(NR-x)
также возвращает пустую строку.
Может ли кто-нибудь помочь мне распечатать вторую по последней записи в этом случае? Спасибо
'$ n' выбирает _field_; чтобы выбрать _record_ (обычно, но не здесь), используйте 'awk -vRS =% 'NR == 1135'' для одного файла или комбинированных файлов или' FNR' для одного из нескольких файлов. Вы можете сделать оба прохода за один проход, например, 'awk -vRS =% 'FNR == NR {sel = NR-1} FNR == sel' filename filename'. Но лучше использовать @ dawg один проход с двумя варами. –