2016-06-27 3 views
0

Например, у меня есть:Как удалить строку с тем же самым словом и последовательно увеличивая число в текстовом файле с помощью сценария оболочки?

Hello1 : 
Hello2 : 
Hello3 : 

Как я могу удалить все это с помощью сценария оболочки. Число достигает вплоть до 1000.

+3

Вы пробовали 'sed -i '/^Hello [0-9] [0-9] * []:/d' filename'? Если после '': ''есть дополнительный текст (или вы хотите удалить всю строку), вы можете использовать' sed -i'/^ Hello [0-9] [0-9] * []:. * $/d 'filename' –

ответ

2
sed -i '/^Hello[[:digit:]]\+\>/d' file.txt 

Или, если вы хотите вывести в другой файл:

sed '/^Hello[[:digit:]]\+\>/d' file.txt > newfile.txt 
+0

Вы могли бы добавить немного больше объяснений, которые помогут вам получить несколько оборотов и принятие. –

+0

Ну, это связано с небольшим количеством знаний в sed.Суть в том, что d - команда удаления, а вещь перед ней - это регулярное выражение для соответствия строк для применения команды. Более подробная информация будет объяснением грамматики ed или грамматики регулярных выражений. – Taywee

2

Если вы хотите удалить все строки, которые содержат только Hello(number) : использования ниже :

Пример ввода в file

Hell 
Hello1 : 
No hello stuff here 
Unjulating stuff 
Hello2 : 
Some sentence 
Hello99 : 

Script

sed -Ei '/^Hello[[:digit:]]+ :$/d' file 

Пример вывода в модифицированном file

Hell 
No hello stuff here 
Unjulating stuff 
Some sentence 

Что происходит над

  1. Использование в паттерне ^ мы проверяем для начала линии.
  2. Мы проверяем шаблон Hello(number) : с использованием Hello[[:digit:]]+ :$. Обратите внимание, что я использовал -E для включения расширенных регулярных выражений sed, поэтому мне не нужно избегать + ie (\+). Здесь [[:digit:]] - класс, который содержит , все десятичные числа и + используются для проверки того, соответствует ли шаблон ему, по крайней мере, одному времени.
  3. Проверьте конец строки, используя $
  4. Для подходящего шаблона, удалите строки, используя d вариант
  5. Я также использовал SED inplace edit вариант -i так, что изменения непосредственно сохранены в файл.

Если вы хотите изменить линию начинается с Hello(number) : затем используйте следующий сценарий

sed -Ei '/^Hello[[:digit:]]+ :/d' file 

Вы могли бы иметь уведомление, что я просто Убран $, поэтому наша модель соответствует любой строке, которая начинается с

Надеюсь, это поможет.