Ответ 1
Вам просто нужно отменить соответствие, используя !
:
sed -i '/^##Input/! s/foo/bar/g' myfile
Я хочу глобально заменить строку foo на строку строки, используя sed. Это нужно делать только для строк, которые НЕ начинаются со строки ## Input.
Я не могу заставить его работать. Я пробовал такие вещи, но дошел до точки, где я не уверен, знаю ли я, что я делаю:
sed -i '/^##Input/ s/foo/bar/g' myfile
Пожалуйста, помогите!
Вам просто нужно отменить соответствие, используя !
:
sed -i '/^##Input/! s/foo/bar/g' myfile
Вам нужно уйти #, как в \#
.
Уродливый ответ за уродливый запрос (т.е. они получают то, что они просили):
echo \{
for file in *.json; do
sed -n '/^[\{\}]/! s/\([^\,]\)$/\1,/; /^[\{\}]/!p' $file
done
echo \{