У меня есть файл, содержащий следующие строки:
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Как удалить строку «SUKsoft:»?
Эта строка может находиться в любом месте файла (начиная с текущего места или в середине).
Есть ли приказ сделать это?
решение1
Кудалятьиспользование линии
sed -i '/SUKsoft:\s*$/d' your_file
Пример
% cat foo
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% sed -i '/SUKsoft:\s*$/d' foo
% cat foo
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
решение2
Вот шаги по удалению нужной строки:
$ sed 's/SUKsoft: *$//' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
Я предполагаю, что file.txt
содержит строки.
Или,
$ sed 's/SUKsoft: *$//; /^$/d' file.txt
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
он не оставляет никакихпустойлиния.
Для редактирования файла вы можете использовать,
sed -i 's/SUKsoft: *$//' file.txt
или
sed -i 's/SUKsoft: *$//; /^$/d' file.txt
в соответствии с вашими потребностями.
ВидетьАБответ, где это сделано более компактно. СпасибоУниверсальный символ.
решение3
grep
ищет строки, удовлетворяющие шаблону. grep -v
сбрасываетлинии, которые удовлетворяют шаблону.
grep -v '^SUKsoft: *$'
Шаблон таков: строки, начинающиеся ( ^
) с SUKsoft:
, за которыми могут следовать пробелы, но ничего больше до конца строки ( $
).
решение4
Судя по твоемупост не сырой источникПосле «SUKsoft:» нет пробела или последовательности пробелов, однако на всякий случай эта команда позаботится о них, если они есть.
Использование Perl:
perl -ne '!/^SUKsoft: *$/&&print' input
!/^SUKsoft:$/&&print
: если текущая строка не соответствует шаблону^SUKsoft: *$
, который соответствует строке, начинающейся со строки,SUKsoft:
за которой следует ноль или более пробелов, выводит строку;
% cat input
SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW
% perl -ne 'print unless /^SUKsoft: *$/' input
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW