Полоса, запаздывающая пробел из файлов

если выполнение Ctrl+Q (как описано в другом Ответе) не работает, возможно, что Ваш TTY был искажен некоторой другой программой, которую Вы запустили. Попытайтесь работать reset и затем clear (или Ctrl+L) к initialze Ваш терминал.

9
23.05.2017, 15:40
2 ответа

$1 позиционный параметр; это расширится до первого аргумента, переданного сценарию. Существуют так же $2, $3...$9, ${10}, ${11},...

Специальный параметр "$@" расширится до списка всех позиционных параметров.

Таким образом, можно сделать следующее:

sed -i 's/[ \t]*$//' "$@"

Если Вы хотите передать шарик/шаблон этому сценарию (или любой программе), этого нужно оставить или заключить в кавычки при вызове сценария - это - функция оболочки; это развернет любые шаблоны, прежде чем Ваш сценарий даже будет видеть его. Этому случаю не должно быть нужно это - оболочка может развернуть шаблон и результаты того расширения, которому все передаются sed.

12
27.01.2020, 20:05
  • 1
    Точно тот же путь: echo "$@". Используя параметр не изменяет его всегда, таким образом, можно сослаться $@ (или любой другой параметр: позиционный, особенный или не) как много раз, как Вы хотите. –  Shawn J. Goff 27.10.2011, 01:09
  • 2
    Да, я понял, что после того, как я отправил, но было, по-видимому, слишком медленным для удаления вопроса. :-) –  Faheem Mitha 27.10.2011, 01:17
  • 3
    имеет в виду -i.bak, также... не говоря уже о том, что иногда я сталкиваюсь с некоторым вариантом sed без -i :)... +1, все еще. –  0xC0000022L 22.02.2013, 22:26
  • 4
    Это не работает с версией sed это поставлется с OS X. Вместо этого установка gnu-sed (brew install gnu-sed) и замена sed с gsed в команде. спасибо –  Robert Audi 02.04.2014, 15:34

Мне легко просто использовать sed с xargs следующим образом:

find . -name "*.xml" | xargs sed -i 's/[ \t]*$//'

find . -type f | grep cc | xargs sed -i 's/[ \t]*$//'

8
27.01.2020, 20:05

Теги

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