Як я співставляю слово лише між дужками
Вхід:
this is (test.com)
Бажаний вихід:
test.com
Як я співставляю слово лише між дужками
Вхід:
this is (test.com)
Бажаний вихід:
test.com
Відповіді:
Ось кілька варіантів, усі з яких друкують потрібний вихід:
Використання grep
з -o
прапором (тільки друкувати відповідну частину рядка) та сумісними регулярними виразами Perl ( -P
), які можуть виконувати пошук навколо :
printf "this is (test.com)\n" | grep -Po '(?<=\().*(?=\))'
Цей регулярний вираз може потребувати пояснення:
(?<=\()
: Це позитивний погляд ззаду , загальний формат є, (?<=foo)bar
і він відповідатиме всім випадкам, що bar
знайдені відразу foo
. У цьому випадку ми шукаємо вхідні дужки, тому використовуємо \(
для того, щоб уникнути цього.
(?=\))
: Це позитивний підхід і просто відповідає дужці, що закривається.
-o
Варіант grep
причин його друкувати тільки збігається частина якої - або лінії, тому ми шукаємо те , що в дужках , а потім видалити їх sed
:
printf "this is (test.com)\n" | grep -o '(.*)' | sed 's/[()]//g'
Проаналізуйте всю справу за допомогою Perl:
printf "this is (test.com)\n" | perl -pe 's/.*\((.+?)\)/$1/'
Проаналізуйте всю справу за допомогою sed
:
printf "this is (test.com)\n" | sed 's/.*(\(.*\))/\1/'
Одним із підходів було б використання PCRE - Perl регулярних виразів із grep
:
$ echo "this is (test.com)" | grep -oP '(?<=\().*(?=\))'
test.com