заменить строки со специальными символами в огромном файле, используя sed - PullRequest
1 голос
/ 29 марта 2012

Я застрял в этой очень простой проблеме (надеюсь, это для вас). Мне нужно заменить несколько строк специальными символами в огромном файле. Я пытаюсь использовать sed и bash, потому что я пользователь Linux, но я использовал только sed для "стандартной" строки.

Это те строки, которыми я пытаюсь манипулировать

(alpha[1],alpha[2]) и diff(A45(i,j),alpha[1])

и замещающие строки будут

(i,j) и dzA45(i,j)

Я пытался sed -i 's/(alpha[1],alpha[2])/(i,j)/g' $filetowork и sed -i 's/\(alpha\[1\],alpha\[2\]\)/i,j/g' $filetowork безуспешно

Второй вариант работает для первого типа строк, но не для второго, почему?

не могли бы вы мне помочь? К сожалению, я просмотрел старые вопросы StackOverflow без посторонней помощи: (

1 Ответ

3 голосов
/ 29 марта 2012

Я только что попробовал в командной строке, но

echo "(alpha[1],alpha[2])" | sed 's/(alpha\[1\],alpha\[2\])/(i,j)/

работал для первого случая.Обратите внимание, что вы не должны избегать ( или ), потому что именно так вы активируете группы.

Для второго

echo "diff(A45(i,j),alpha[1])" | sed 's/diff(A45(i,j),alpha\[1\])/dzA45(i,j)/'

работал для меня.Тот же случай, не выходите за скобки!

...