Как передать $ 1 в sed? [закрыто]

Две опубликованные вами цитаты звучат как чье-то мнение, а не как «документация».

Стандарты - это движущиеся цели. Можно стремиться внедрить их, но каждые несколько лет они обновляются, и всегда будут расширения и случаи, когда стандарт намеренно не соблюдается. Это касается «надлежащих стандартов», а также «специальных стандартов».

Стандарты, такие как POSIX, однако, со временем меняются лишь медленно , при этом новые вещи вводятся по мере того, как они оказываются полезными, востребованными и широко распространенными, а старые вещи отбрасываются, когда они оказываются выпадающими из строя. использовать и т. д. Вот почему некоторые здесь, на U&L, стремятся указать, что некоторые оболочки (например) не совместимы с POSIX, а работают (или нет, в зависимости от обстоятельств) с определенными версиями определенных реализаций инструменты. Это способ заставить ответ жить дольше, чем конкретная реализация, предлагаемая GNU или другим поставщиком.

Лучшим местом для поиска документации по интерфейсам и инструментам в вашей системе всегда будут интерактивные руководства по вашей системе , а также любые другие формы документации, которые могут распространяться с программным обеспечением, которое вы Пользуюсь.

Вы можете поискать в Интернете, что делает определенный флаг для утилит sed или grep , или как использовать Getopt :: Long в Perl, но это будет руководство, установленное с фактической утилитой или библиотекой в вашей системе , то есть окончательная документация.

Историческая документация полезна для людей, использующих те же самые старые системы, ничто не отрицает этого, но часть документации обычно предназначена для системы или инструмента, как это было на момент написания. Если вы используете новую систему OpenBSD 5.9, например, и задаетесь вопросом, почему sudo не работает, потому что вы читаете веб-страницу, в которой говорится, что она должна быть в базовой системе, ну, это Было бы лучше, если бы вы прочитали руководство afterboot (8) (по запросу), в котором описывается система, которую вы только что установили . Это расскажет вам об утилите doas .

Я хочу сказать, что не имеет значения, где движется Unix или откуда он. Вы находитесь перед машиной, на которой он запущен , прямо сейчас , и именно там вы найдете самую свежую документацию.

Если вы видите что-то в Интернете, описывающее, как настроить UUCP для обмена электронными письмами между хостами или как выполнить репликацию базы данных в PostgreSQL, вы должны принять во внимание предполагаемую аудиторию документа и то, что эти инструменты могут быть и вести себя по-другому в зависимости от времени. В руководствах по вашей системе вы , пользователь, желающий знать, как использовать систему, которая находится перед вами, в качестве целевой аудитории.

Прошу прощения, если я немного пропустил отметку в своем ответе, но это то, о чем я немного думал в последнее время.

3
13.02.2017, 21:56
1 ответ

Я не совсем понимаю, почему у вас не получается, когда тот же скрипт у меня работает так, как ожидалось.

sed.sh

  1 #!/bin/bash
  2 directory=$1
  3 echo $directory
  4 LC_CTYPE=C
  5 sed -i.clean -f uncap-html.sed $directory/*.html
  6 echo DONE

uncap-html.sed

[gc13@oc1245342277 sh]$ cat uncap-html.sed 
s/z/o/g
[gc13@oc1245342277 sh]$ 

1.html

Hello

2.html

World

Выполнение

[gc13@oc1245342277 sh]$ cat *.html
Hellz
Wzrld
[gc13@oc1245342277 sh]$ 

Вы можете попробовать другой подход:

#!/bin/bash
FILES="$1/*.html"
echo $FILES
LC_CTYPE=C
sed -i.clean -f uncap-html.sed $FILES
echo DONE
1
27.01.2020, 21:30

Теги

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