Регулярное выражение для соответствия начала и конца строки?

Может ли кто-нибудь сказать мне регулярное выражение, которое соответствует началу или концу строки? например, если бы я использовал sed 's/[regex]/"/g' filehere вывод будет каждая строка в кавычках? Я старался [\^$] а также [\^\n] но ни один из них, казалось, не работал. Я, наверное, упускаю что-то очевидное, я новичок в этих

3 ответа

Решение

Пытаться:

sed -e 's/^/"/' -e 's/$/"/' file

Добавить кавычки в начале и конце каждой строки просто:

sed 's/.*/"&"/g'

Тем не менее, RE, который вы пытались найти, чтобы соответствовать началу или концу каждой строки:

sed -r 's/^|$/"/g'

Это ERE (включить с помощью "-r"), поэтому он будет работать с GNU sed, но не с более старыми.

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

Вот как это можно сделать с помощью обратной ссылки:

sed 's/\(^.*$\)/"\1"/g' file

в основе этого регулярного выражения ^.*$, что означает совпадение чего-либо (.*) в окружении начала строки (^) и конец строки ($), что фактически означает, что он будет соответствовать всей строке каждый раз.

помещение этого термина в круглые скобки создает обратную ссылку, к которой мы можем обратиться позже (в шаблоне замены). но для того, чтобы sed понял, что вы хотите создать обратную ссылку вместо литеральных скобок, вы должны избегать их с помощью обратной косой черты. таким образом, мы в конечном итоге \(^.*$\) как наш шаблон поиска.

шаблон замены - это просто двойная кавычка, за которой следует \1, который является нашей обратной ссылкой (относится к первому совпадению с шаблоном, заключенному в круглые скобки, отсюда 1). затем добавьте свою последнюю двойную кавычку, чтобы в итоге "\1",

Другие вопросы по тегам