我有這樣的行的文件:bash的正則表達式查找線,重複的單詞
"def{word} def{word}"
"def{worad} def{worads}"
,我想向大家報告,發生兩次支撐的話。 所以輸出應該在這種情況下,只是「詞」 我所擁有的是:
#!/bin/bash
arr=(
"def{word} def{word}"
"def{worad} def{worads}"
)
for i in "${arr[@]}"; do
[[ $i =~ def\{([a-z]+)\}.*def\{\1\} ]] || continue
echo ${BASH_REMATCH[1]}
done
即,我嘗試的第一個字用\ 1(背參考)相匹配。但是,輸出是零。 我該怎麼做?
嗯,你的正則表達式工作正常,我在我的正則表達式測試器。所以這似乎是與事情的背後的一面。也許嘗試簡化以取出數組,然後僅測試一個字符串。 – acarlon
但是在Bash中這樣做似乎不自然。 'sed -n s/def {\([^}] * \)} * def {\ 1}/\ 1/p'文件' – tripleee