Вообще, для программного обеспечения Unix в целом, пользовательские настройки (в данном случае ~/.ssh/config
) будут иметь больший приоритет над общесистемными настройками (в данном случае /etc/hosts
); таким образом, настройки в ~/.ssh/config
будут иметь больший приоритет.
Не ясно, всегда ли присутствует 99999999
или во входном файле может быть более одного такого экземпляра. Итак, вот версия sed
, которая обслуживает все эти ситуации.
Обновление входного файла на месте см. в man sed
(опция -i
).
sed -n '/9999999999/{H;b n}; p; :n; ${g;s/\n//p}' file
С помощью awk
можно сделать:
awk '
/PATTERN/ { save = $0 ; next }
{ print }
END { print save }
' infile > outfile
, где нужно заменить PATTERN
на фактический шаблон и in file
является вашим файлом данных; переименовать его соответствующим образом.
Код работает следующим образом:
/PATTERN/ { save = $0 ; next }
- если шаблон найден, сохраните эту строку для последующего использования и пропустите печать (поэтому она удалена с этого места)
{ print }
- печатает те строки в файле, которые не были пропущены предыдущей командой
END { print save }
- наконец, когда все строки будут обработаны, добавьте сохраненную строку, ту, где шаблон совпал
Если вы хотите перезаписать исходный файл новым файлом, добавьте команду mv
после сценария awk
:
mv outfile infile
снова с соответствующими выбранными именами файлов.
Другое sed решение
sed -i '
/9999999999/{h;d}; # move match string in hold space
$G; # append string from hold space to end
s/\n$// # avoid empty line if pattern have not met
' BADINS0000001065_0000000000*