У меня есть присвоение редактирования текстового файла, названного LOLOLOL
.
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY bob bob bob Gary gary
the the bird in the the bush!
LOL MATE!
У меня есть названный файл сценария удара lolz.script
:
#!/bin/bash
sed '1i Hee hee hee\n Ho Ho Ho\n' $1
sed 's/bob/Bob/g' $1
выполнение .\lolz.script LOLOLOL
в командной строке я получаю несколько повторений LOLOLOL
текст - точно, одно повторение на команду sed.
Например, вывод показывает первые и вторые команды sed (запросил каждого), здесь:
*Hee Hee Hee
Ho Ho Ho*
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY bob bob bob Gary gary
the the bird in the the bush!
LOL MATE!
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY *Bob Bob Bob* Gary gary
the the bird in the the bush!
LOL MATE!
Принимая во внимание, что, что я хочу вывод:
*Hee Hee Hee
Ho Ho Ho*
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY Bob Bob Bob Gary gary
the the bird in the the bush!
LOL MATE!
Как Вы видите, каждая команда sed применяется независимо в каждом повторении печати текстового файла. Мне нужны все команды sed, которые будут применены вместе.
Отметьте, как желаемый заголовок сначала sed команда применяется в первом повторении, в то время как во втором это не (но bob
кому: Bob
изменение).
Почему это произошло, и что я могу сделать для создания команд в сценарии кумулятивными к одному текстовому файлу? Этого, казалось, не произошло с тем-же-форматом awk
сценарий.
Просто: Вы вызов sed
дважды.
при выполнении тех команд в терминале один за другим Вы закончите с двумя наборами вывода. Ваш сценарий просто делает то же самое в своей собственной оболочке.
можно использовать {}
, чтобы сгруппировать команды и поместить каждого на новую строку или использование ;
так все действие команд на файле кумулятивно, звоня sed только однажды:
#!/bin/bash
sed '{
1i Hee hee hee\n Ho Ho Ho\n
s/bob/Bob/g
}' "$1"
вывод ./script file
Hee hee hee
Ho Ho Ho
HRFJGEKGJHEJGKJVNEJGKJEG BOB BO B
GARY gARY gARY gary
FOG GARY Bob Bob Bob Gary gary
the the bird in the the bush!
LOL MATE!