Как именно создать скрипт sed и использовать его для редактирования файла?

Как именно создать скрипт sed и использовать его для редактирования файла?

Я знаю, как редактировать файл с помощью sed по шагам, но как мне создать настоящий скрипт sed, а затем использовать его в файле, чтобы делать то же самое, что делают отдельные команды sed? Например, эти 3 команды sed:

sed -i '4i\ ' baconFile

sed -i 's/,/\t\t/' baconFile

sed -i 's/,/ /' baconFile

решение1

Помещение команд в файл

Поместите эти строки в файл скрипта с именем script.sed.

4i\ 
s/,/\t\t/
s/,/ /

Затем запустите его следующим образом:

$ sed -i -f script.sed baconFile

Создание автономного скрипта sed

если вы хотите, чтобы это был один исполняемый файл, то сделайте следующее:

#/bin/bash

sed -i '
4i\ 
s/,/\t\t/
s/,/ /
' "$@"

Поместите приведенные выше строки в файл с именем script.bash, сделайте его исполняемым ( chmod +x script.bashи запустите его следующим образом:

$ script.bash baconFile

Создание файла скрипта

Вы можете использовать этот метод для создания файла, о котором я упоминал выше.

$ cat > script.bash <<EOF
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /
EOF

Это создаст файл скрипта. Вы можете подтвердить это с помощью этой команды:

$ cat script.bash
#!/bin/bash

4i\ 
s/,/\t\t/
s/,/ /

решение2

sed -i '4i\ 

s/,/\t\t/

s/,/ /' baconFile

sed работает как большинство интерпретаторов, несколько команд могут располагаться на отдельных строках или разделяться точкой ;. Если у вас нет GNU sedпервой строки, это может привести к ошибке.


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

#!/bin/sed -f
s/foo/bar/

chmod u+x foo
./foo <<<foo
bar

или скрипт можно вызвать вместе с командой sed. sed -i -f foo file

решение3

Вам нужна -fопцияsed -f sed-script

решение4

Вы можете написать скрипт оболочки bash или korn, чтобы сделать это. Если вы хотите сделать его динамическим, вы можете сделать так, чтобы он принимал имя файла в качестве параметра, и вы можете запускать эти команды sed для любого файла, который вам нужен.

Создайте новый файл, скажемupdatefile.sh

#!/bin/bash
#$1 is the first parameter being passed when calling the script. The variable filename will be used to refer to this.
filename=$1

sed '4i\ ' filename
sed 's/,/\t\t/' filename
sed 's/,/ /' filename

Затем вы можете запустить updatefile.sh baconFile, который выполнит все три команды sed для файла baconFile.

Также gопция в sed обновит все вхождения переменной в файле. Например:

sed 's/,/ /g' filename

Связанный контент