Как удалить строку с переменным поиском с помощью sed команду

@Jordanm уже дал Вам канонический ответ, который работает на любую строку. Если Вы имеете дело конкретно с путями, можно также использовать программы basename и dirname:

   basename - strip directory and suffix from filenames
   dirname - strip last component from file name

Например:

$ file="$HOME/Documents/test/one.txt"
$ dir=$(dirname "$file");
$ name=$(basename "$file");
$ echo "The file called $name is in the directory $dir"
The file called one.txt is in the directory /home/terdon/Documents/test
2
25.11.2018, 16:46
3 ответа
[116397]Ваша команда [116769]sed[116770] не работает, потому что во время цикла, каждый раз при чтении строки, она удаляет эту строку (и только эту строку) из полного входного файла, выводя ее в [116771]/home/dummy[116772]. Это означает, что выходной файл каждый раз перезаписывается. Таким образом, первая итерация цикла удаляет строку, начинающуюся с [116773]123,[116774], но затем вторая итерация использует исходный полный файл, который все еще включает эту строку.[12195] Попробуйте [116775] grep[116776] вместо:[12196] От [116777] man grep[116778]:[12197]
5
27.01.2020, 21:51
[116411]Версия [116789]awk[116790]:[12212]
2
27.01.2020, 21:51
[116403] Во-первых, вы не хотите [12198] пока читаете[12199] где-нибудь там - [12200] sed[12201] будет читать ваш файл. Далее, вам нужно убедиться, что вы обрабатывает [12202]жадные[12203]спички - [12204]sed[12205]будет притягивать как можно больше. Так что [12206] видишь? Он печатает его.[12207]Так что вам нужно, основываясь на том, что вы показали, что-то вроде этого:[12208]Если ваш скрипт [12209]sed[12210]находится в файле:[12211]
1
27.01.2020, 21:51

Теги

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