С переходом на лучшую систему управления я хочу удалить все избыточные журналы в верхней части каждого из исходных файлов. В Notepad ++ я смог добиться результата, используя «заменить в файлах» и заменив совпадения на \A(//.*\n)+
пустым. Однако на Linux мне не хватает такой удачи, и мне нужно прибегнуть к «xargs» и «sed».Как перенаправить put of xargs при использовании sed
СЕПГ выражение я использую:
sed '1,/^[^\/]/{/^[^\/]/b; d}'
Гадкий, чтобы быть уверенным, но это не похоже на работу.
Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь запустить это через «xargs», чтобы передать все исходные файлы в нашей системе. Я не могу перенаправить вывод на «разделенные» файлы, которые я тогда намереваюсь для копирования оригиналов.
Я хочу что-то в строке:
find . -name "*.com" -type f -print0 | xargs -0 -I file sed '1,/^[^\/]/{/^[^\/]/b; d}' "file" > "file.stripped"
Однако у меня горе Проходя мимо «>» до принимающей среды (оболочки), как я уже использую слишком много кавычек , Я пробовал всевозможные экранизации и оболочки «обертки», но я просто не могу заставить его играть в мяч.
Кто-нибудь хочет указать мне в правильном направлении?
Thanks, Slarti.
Поддерживает ли ваша реализация СЭД в '-i' вариант? – choroba
Есть, да. Это облегчает жизнь. Я отдам его и вернусь к вам;) – Slartibartfast
Зачем вам идти с опцией -exec в поиске. Что-то похожее на это: «Найди. -name "* .com" -type f -print0 -exec sed '1,/^ [^ \ /]/{/^[^ \ /]/b; d} '{}> "file.stripped" \; ' –