У меня есть 4 разных команды sed, которые я запускаю в файле. И для того, чтобы настроить выполнение этих 4 команд, я хочу объединить их в один. Каждая команда представляет собой сложную команду с ключом -E. Искал много форумов, но не смог получить свой конкретный ответ.Как объединить несколько команд sed в один
sed -i -E ':a; s/('"$search_str"'X*)[^X&]/\1X/; ta' "$newfile"
sed -i -E '/[<]ExtData[>?" "]/{:a; /Name=/{/Name="'"$nvp_list_ORed"'"/!b}; /Value=/bb; n; ba; :b; s/(Value="X*)[^X"]/\1X/; tb; }' "$newfile"
sed -i -E ':a; s/('"$search_str1"'X*)[^X\<]/\1X/; ta' "$newfile"
sed -i -E ':a; s/('"$search_str2"'X*)[^X\/]/\1X/; ta' "$newfile"
И я хочу, чтобы объединить их что-то вроде
СЕПГ -i -E 'command1' -e 'command2' -e 'command3' -e 'command4' "$ NewFile"
Но он не работает. Потому что может быть -E и -e нельзя комбинировать.
Пожалуйста, дайте мне знать.
Спасибо! Пунит
Если вы находитесь на Mac OSX или другой системе BSD, то для '-i' требуется аргумент. Достаточно пустого аргумента: 'sed -i '" -E -e' command1 '-e' command2 '-e' command3 '-e' command4 '"$ newfile" ' – John1024
Предполагается, что' -E' должен быть '-r '? –
@MadPhysicist В современном GNU sed (начиная с версии 4.2.1), '-r' и' -E' являются синонимами. В BSD работает только '-E'. Ходят слухи, что POSIX работает с стандартом «-E». – John1024