awk '/^4$/&&getline<"after.txt"||1' before.txt
Если текущая запись $ 0
- это в точности текст 4
, тогда получить следующую строку из after.txt
. Если это успешно, оно становится $ 0
, а getline
возвращает 1, поэтому выражение истинно и запускается действие по умолчанию {print}
.
Если запись не 4
, или getline возвращает 0
в EOF
из after.txt
, || 1
гарантирует, что мы по-прежнему печатаем текущую запись. $ 0
не изменяется, если чтение after.txt
не удается.
Если getline
завершается ошибкой с -1
, мы все равно печатаем $ 0
, поскольку это ненулевой код возврата.