Sed сопоставляет и заменяет только определенные символы

У меня есть несколько строк в очень похожем формате.

      (#1111111)
(#4444444)

Я пытался использовать sed для получения вывода:

      1111111
4444444

Я пытался:

      sed  's/(#[0-9]+)/^[0-9]+/g'

который, кажется, соответствует нормально, но замена не работает.

1 ответ

Учитывая формат, который у вас есть в вопросе, это можно сделать двумя способами:

      sed 's/.*#\(.*\))/\1/' file

Это напечатает все между#и все, что предшествует этому, что в данном случае является(, и .

Это также можно сделать:

      sed -e 's|^(#||g' -e 's|)$||g' file

Это удалит(#от начала строки и)с конца.

Выход:

      1111111
4444444

Если это файл, вы можете добавить-iпосле sed, чтобы отредактировать его на месте. Для стандартного вывода передайте команду, предоставляющую ее, вsed.

Если это файл или другой вывод и есть различия, то вам придется скорректировать команды. Я оперирую только тем, что вы указали в вопросе.

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