Sed колотят сценарий, выполняющий итерации многократно

У меня есть присвоение редактирования текстового файла, названного 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 сценарий.

2
задан 23 October 2016 в 11:14

1 ответ

Просто: Вы вызов 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!
2
ответ дан 2 December 2019 в 03:44

Другие вопросы по тегам:

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