Никакой результат при использовании Нескольких не пишет файл и sed в сценарии оболочки

Сожмите в настоящее время имеет 2.6.32-59. Для получения дополнительной информации взгляните на chanelog запись для 2.6.32-42.

То, какова точно Ваша проблема и почему Вы думаете, обновляя ядро, может помочь? Поскольку можно всегда понижать пакеты не должно быть никакой проблемы с помощью новейшего ядра Linux в бэкпортах.

2
25.07.2013, 06:44
2 ответа

Перенаправление ударяет (очищает) файл перед выполнениями команды. Команда sponge от moreutils, впитывает его стандартный вход прежде, чем записать в файл. Тем путем файл перезаписывается после того, как команда работала.

cat ../oldFile.html | sed "s@$dayMaxInNew@$dayMaxIn@g" > newFile
cat newFile | sed "s@$dayAvgInNew@$dayAvgIn@g" | sponge newFile
cat newFile | sed "s@$dayCurInNew@$dayCurIn@g" | sponge  newFile

Если у Вас нет moreutils, можно использовать временные файлы. Также обратите внимание, что Вы не должны использовать cat.

sed "s@$dayMaxInNew@$dayMaxIn@g" < ../oldFile.html > newFile
sed "s@$dayAvgInNew@$dayAvgIn@g" < newFile | sponge newFile
sed "s@$dayCurInNew@$dayCurIn@g" < newFile | sponge  newFile

И наконец, можно объединить несколько команд sed в одну.

sed "s@$dayMaxInNew@$dayMaxIn@g
     s@$dayAvgInNew@$dayAvgIn@g
     s@$dayCurInNew@$dayCurIn@g" < ../oldFile.html > newFile

или

sed -e "s@$dayMaxInNew@$dayMaxIn@g" \
    -e "s@$dayAvgInNew@$dayAvgIn@g" \
    -e "s@$dayCurInNew@$dayCurIn@g" < ../oldFile.html > newFile
3
27.01.2020, 21:57
  • 1
    для Губки, Это подкачивает только 1-ю переменную, но я использовал, несколько управляют. Это - работа. Огромное спасибо :) –  user43755 25.07.2013, 07:27

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

sed "command1;command2;command3" < ../oldfile.html > newFile
2
27.01.2020, 21:57

Теги

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