Удалить ровно одну строку в файле

Удалить ровно одну строку в файле

У меня есть файл, содержащий следующие строки:

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

Связанный контент