Проблема здесь в том, что по умолчанию это:
ip addr add 10.0.0.1 dev eth0
Установите маску подсети / 32
, что означает, что в подсети не может быть других узлов, и пытается установить маршрут там с помощью через
ничего не значило.
Использование явной, более разумной маски:
ip addr add 10.0.0.1/24 dev eth0
Решает проблему; поочередно см. ответ Джофеля.
Las herramientas de Unix suelen estar orientadas a líneas -y, por lo tanto, no hay forma de aplicar una expresión regular a varias líneas de entrada utilizando la caja de herramientas estándar.
sed
se puede hacer para procesar el archivo de tal manera que pueda detectar las líneas que está buscando, pero hacemos esto estrictamente usando operaciones en líneas individuales:
$ sed -n '/^Text/{N;/^Text\nLine/=;D;}' file
10
Este script sed
busca la cadena Text
al comienzo de una línea. Cuando lo encuentra, agrega la siguiente línea a su búfer con un \n
en -en medio.
Si el búfer ahora coincide con ^Text\nLine
, entonces el número de línea actual se genera usando el comando =
en sed
. El número de línea generado es el de la línea Line
en el archivo.
Tenga en cuenta que, si bien la segunda expresión regular parece coincidir en una nueva línea del archivo, no es así. Coincide con una nueva línea en su búfer interno, que colocamos allí usando el comando N
cuando leemos la siguiente línea del archivo.
Probablemente usaría esto en un bucle si desea aplicarlo a varios archivos:
for name in pattern; do
printf 'Processing %s...\n' "$name"
sed -n '/^Text/{N;/^Text\nLine/=;D;}' "$name"
done
donde pattern
sería un patrón de globbing de nombre de archivo ordinario que coincide con los archivos que le interesan.
Si vim
está instalado, puede usarlo en el modo ex
como:
vim -e -s -c 'argdo g/^Text\nLine/#' -c q./*.txt
Ver también el comando z
para dar contexto.
vim -e -s -c 'argdo g/^Text\nLine/z#.5' -c q./*.txt
Sin embargo, eso no imprime los nombres de los archivos. Un enfoque no muy eficiente perl
podría ser:
perl -l -0777 -ne 'while (/Text\nLine/g) {
print "$ARGV, line ". ++(() = $` =~ /\n/g)}'./*.txt
perl -ne 'eof and $. = 0 or /^Text/ && ($_.= <>) =~ /^Line/m && print "$ARGV: $.\n"'./*
Esto imprimirá el nombre del archivo junto con el número de línea donde ocurrió la coincidencia.
Además, el contador de línea ($. )se restablece al llegar a eof de cada archivo.