Remove exactly one line in в file

I have в file that contains the following lines:

SUKsoft:
SUKsoft: App-Conduct_Risk_Comment
SUKsoft: App-Conduct_Risk_R
SUKsoft: App-Conduct_Risk_RW

How хан I remove the line "SUKsoft:"?

This line could be in any нравится of the file (beginning эксперт it is now, or in the middle).

Is there в command to do this?

6
задан 29 October 2015 в 09:32

4 ответа

grep поиски строк, которые удовлетворяют шаблон. grep -v отбрасывания строки, которые удовлетворяют шаблон.

grep -v '^SUKsoft: * 

шаблон: строки, которые запускаются (^) с SUKsoft:, возможно сопровождаемый пробелами, но ничем иным до конца строки ($).

шаблон: строки, которые запускаются (^) с SUKsoft:, возможно сопровождаемый пробелами, но ничем иным до конца строки ($).

3
ответ дан 23 November 2019 в 07:19

К удаляют использование строки

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
8
ответ дан 23 November 2019 в 07:19

Вот шаги для удаления желаемой строки:

$ 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

согласно потребности.

Видят ответ A.B, где он сделан более компактным способом. Благодаря Подстановочный знак .

4
ответ дан 23 November 2019 в 07:19

Оценка от Вашего post't необработанный источник нет никакого пространства или последовательности пробелов после "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
1
ответ дан 23 November 2019 в 07:19

Другие вопросы по тегам:

Похожие вопросы: