Ваша попытка с sed
не может работать, потому что она просто удалит строку rootdev
с пустой строкой.Вам нужен инструмент, который соответствует шаблону и выполняет действие со всей этой строкой, для которого, я думаю, awk
более рекомендуется, чем sed
.
Использование awk
для сопоставления линии, чтобы удалить ее.пробелов, использующих gsub()
, должно быть достаточно,
awk '/^rootdev/{ gsub(/[[:space:]].*/,"",$0) }1' file
Если вы используете GNU awk
с версией, превышающей 4.1.0, вы можете использовать опцию редактирования на месте, чтобы вносить изменения динамически
gawk -i inplace '/^rootdev/{ gsub(/[[:space:]].*/,"",$0) }1' file
для более ранних версий используйте временный файл
awk '/^rootdev/{ gsub(/[[:space:]].*/,"",$0) }1' file > temp && mv temp file
или используйте sponge
из moreutils
.Если его нет в вашей системе, загрузите его на RHEL, используя yum install moreutils
или apt-get
в Debian.
awk '/^rootdev/{ gsub(/[[:space:]].*/,"",$0) }1' file | sponge file