Это допустимая команда оболочки sed и что она делает? - PullRequest
0 голосов
/ 23 сентября 2009
sed 's/\([ab]\)\([ab]\)./\2\1x/g' file.txt

Мое понимание таково: в file.txt найдите любую строку, начинающуюся с «a» или «b», за которой следуют либо «a», либо «b», за которыми следует ОДИН символ (скажем, «abc»), и замените его строкой 1-й и 2-й символы переключаются, и 3-й символ - это x ('bax'). Правильный ли синтаксис команды? и я прав?

Ответы [ 2 ]

3 голосов
/ 23 сентября 2009

Вы правы, кроме начальной части. Это будет совпадать с символами в любом месте строки, столько раз, сколько возможно, поэтому вы получите такие замены:

"123ab1" to "123bax"
"1234ab" to "1234ab"
"ab1ba2" to "baxabx"
"bbaabb" to "bbxbax"

То, что вы можете захотеть сделать, это привязать его к началу строки с помощью символа вставки, например:

s/^\([ab]\)\([ab]\)./\2\1x/g

Предоставление:

"abc123" to "bax123"
"123abc" to "123abc"
2 голосов
/ 23 сентября 2009

Да, вы - обратите внимание, что буква «g» в конце означает, что она будет производить замену столько раз, сколько может в каждой строке По какой-то причине вы не могли просто попробовать и посмотреть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...