Я обнаружил, что промывка IP-адреса eth* помогает, как в этом посте: https://ubuntuforums.org/showthread.php?t=2315062
т.е. sudo ip addr flush dev ethX
Возможно, нужно найти решение, которое сохраняется при перезагрузке системы
Предположим, что ваше стихотворение находится в текстовом документе poem
:
< poem tail -n 2 | head -n 1
Есть много способов сделать это, но это самый быстрый --из тех, что я нашел, и, на мой взгляд, самый чистый.
Предполагая, что стихотворение записано в файле с именем poem
, вы можете использовать:
tail -n 2 poem | head -n 1
tail -n 2 poem
запишет последние 2 строки файла poem
.
head -n 1
запишет первую строку вывода, предоставленного предыдущей командой tail
.
Вы бы сделали
sed '2q;d' <(tac infile)
tac
распечатайте файл infile
в обратном порядке, в отличие от cat
, и передайте его в качестве входных данных в sed
, и это удалит каждую строку (здесь, только первую строку ), кроме второй, а затем немедленно завершите работу.
или альтернативно:
tail -n2 infile | sed '2d'
sed
sed 'x;$!d' <infile
sed
читает по одной строке за раз и удерживая -пробел x
мы сохраняем текущую обработку строки и распечатываем ее!d
(не удалять )один раз sed читать все строки (или в последней строке )и поскольку sed может иметь только один пробел -, поэтому, когда это последняя строка, пробел -содержит предпоследний линия; это то же самое, что и:
sed -n 'x;$p' <infile
Используй ред, чувак!
ed -s poems <<< $'$-1\n'
Это говорит ed открыть файл poems
в режиме сценария (-s
)(, чтобы он не печатал лишних сообщений ), а затем отправляет адресную команду в строке здесь -, которая говорит: «перейти к последняя строка файла ($
), минус 1", которая печатает эту строку.
Учитывая исходный файл стихотворения из:
A is for awk, which runs like a snail, and
B is for biff, which reads all your mail.
C is for cc, as hackers recall, while
D is for dd, the command that does all.
E is for emacs, which rebinds your keys, and
F is for fsck, which rebuilds your trees.
G is for grep, a clever detective, while
H is for halt, which may seem defective.
I is for indent, which rarely amuses, and
J is for join, which nobody uses.
K is for kill, which makes you the boss, while
L is for lex, which is missing from DOS.
M is for more, from which Less was begot, and
N is for nice, which it really is not.
O is for od, which prints out things nice, while
P is for passwd, which reads in strings twice.
Q is for quota, a Berkeley-type fable, and
R is for ranlib, for sorting ar sic table.
S is for spell, which attempts to belittle, while
T is for true, which does very little.
U is for uniq, which is used after Sort, and
V is for vi, which is hard to abort.
W is for whoami, which tells you your name, while
X is, well, X, of dubious fame.
Y is for yes, which makes an impression, and
Z is for zcat, which handles compression.
... вывод результата:
Y is for yes, which makes an impression, and
Это работает с GNU awk (Linux )и BSD awk (Mac ).
Вы можете игнорировать пустые строки. В этом случае вы можете использовать awk 'NF' file.txt
, а затем направить вывод с помощью одного из других методов, описанных на этой странице.
Вы также можете сделать все это за один проход через awk:
awk 'NF { a=b ; b=$0 } END { print a }' file.txt
NF
NF
— количество полей в строке; значения больше 0 рассматриваются как «истинные». { a=b ; b=$0 }
b
, а предыдущую не-пустую строку как a
. END { print a }
a
(предпоследней не-пустой строки ). Если вы не хотите пропускать пустые строки, просто удалитеNF
:
awk '{ a=b ; b=$0 } END { print a }' file.txt