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
.
Если это файл или другой вывод и есть различия, то вам придется скорректировать команды. Я оперирую только тем, что вы указали в вопросе.