Я пытаюсь найти способ использования переменных и sed для выполнения конкретной текстовой подстановки с использованием изменяющегося входного файла, но только если есть значение, заданное для замены существующей строки на , Нет значения = ничего не делать (вместо удаления существующей строки).Подстановка sed bash только если переменная имеет значение
Пример Substitute.csv содержит 5 строк =
this-has-text
this-has-text
this-has-text
this-has-text
и file.text имеет одно предложение =
"When trying this I want to be sure that text-this-has is left alone."
Если я выполнить следующую команду в сценарий оболочки
Text='text-this-has'
Change=`sed -n '3p' substitute.csv`
grep -rl $Text /home/username/file.txt | xargs sed -i "s|$Text|$Change|"
В конечном итоге
"When trying this I want to be sure that is left alone."
Но я хотел бы, чтобы он оставался в
"When trying this I want to be sure that text-this-has is left alone."
Любой способ сказать СЭД «Если я не дам вам ничего нового, ничего не делать»?
Прошу прощения за чрезмерную, плохую привычку. По сути, я хотел бы выполнить, если строка 3 csv-файла имеет значение - замените $ Text на $ Change inline. Если строка пуста, оставьте $ Text как $ Text.
проверить, если '$ Change' пуст, прежде чем перейти к' sed'? – Kent
Ничего себе, вы сделали этот вопрос ПУТЕМ более сложным, чем это должно быть! Все эти вещи о чтении третьей строки из файла и greps, поданных на xargs, совершенно неактуальны и поэтому теряют время, пытаясь понять все это и обманывает очень простой вопрос. –