В vi
:
:%s/^HOST/#&/
или
:g/^HOST/s//#&/
%
в первой команде означает «в весь буфер ", и это краткое обозначение 1, $
, то есть от первой строки до последней. &
в заменяющей части подстановки будет заменен на весь текст, соответствующий шаблону ( ^ HOST
).
Вторая команда применяет замену ( s
) ко всем строкам, совпадающим с ^ HOST
, используя глобальную команду ( g
), которая vi
, унаследованный от линейного редактора ed
.Во втором случае команда s
использует пустое регулярное выражение. Это заставляет повторно использовать последнее использованное регулярное выражение ( ^ HOST
в команде g
). Замена такая же, как и в первой команде.
С sed
:
sed 's/^HOST/#&/' input >output
или
sed '/^HOST/s//#&/' input >output
так же, как в vi
( sed
всегда применяет все команды к каждой строке ввода stream, поэтому мы не используем ничего вроде %
или g
явно с sed
).
Я подозреваю, что у вас есть локаль, использующая запятую как десятичный разделитель. Это должно решить эту проблему:
awk -F' ' '{printf "%-12s%-12s\n", $11, $9}' foo.dat | LC_ALL=C sort -g