Regex Bash如何在模式之后查找模式

Regex Bash如何在模式之后查找模式,regex,bash,shell,sed,grep,Regex,Bash,Shell,Sed,Grep,所以我试图在特定的模式之后找到一种模式 例如,输入文件将是 /wav1/af_ZA_IT_001_B.wav;2.98;3.67;;;dáár wav1 /wav1/af_ZA_IT_001_B.wav;2.98;3.67;;;dáár we1 /wav1/af_ZA_IT_001_B.wav;4.05;7.9;;;dit is franko wav1 van niekerk hier en kobus buys kobus 然后输出文件将在;;之后查找wav1 使用 grep "w

所以我试图在特定的模式之后找到一种模式

例如,输入文件将是

/wav1/af_ZA_IT_001_B.wav;2.98;3.67;;;dáár wav1
/wav1/af_ZA_IT_001_B.wav;2.98;3.67;;;dáár we1
/wav1/af_ZA_IT_001_B.wav;4.05;7.9;;;dit is franko wav1 van niekerk hier en kobus buys kobus
然后输出文件将在
;;之后查找
wav1

使用

grep "wav1" file.txt
我把所有的wav1都突出显示了

/wav1/af_ZA_IT_001_B.wav;2.98;3.67;;;dáár wav1
/wav1/af_ZA_IT_001_B.wav;2.98;3.67;;;dáár we1
/wav1/af_ZA_IT_001_B.wav;4.05;7.9;;;dit is franko wav1 van niekerk hier en kobus buys kobus
但是,由于每个文件都以wav1开头,我无法找到wav1在
;;之后的位置

如何在模式(“;;”)之后找到模式('wav`')

预期产出为

/wav1/af_ZA_IT_001_B.wav;2.98;3.67;;;dáár wav1
/wav1/af_ZA_IT_001_B.wav;4.05;7.9;;;dit is franko wav1 van niekerk hier en kobus buys kobus
我相信

grep -e ";;;.*wav.*" yourfile.txt

就足够了。

轻松使用
grep

grep ';;;.*wav' file.txt
如果你有
grep-p
,你可以使用华丽的Perl正则表达式技巧;以下仅突出显示实际的
wav
匹配:

grep -P ';;;.*\Kwav' file.txt
如果要仅提取
;;之后的零件
您可以使用
sed

sed -n 's/.*;;;//;/wav/p' file.txt

在正则表达式周围通常最好使用单引号,以避免shell与正则表达式混淆(双引号较弱,并且不会保护反斜杠、反勾号或许多美元符号)。

使用GNU grep时,匹配
,然后使用
*
匹配任何文本,然后使用
\bwav1\b
匹配
wav1
,以确保不匹配
wav12

grep -P ';;;.*\bwav1\b' yourfile.txt

p
选项意味着将使用PCRE引擎。

请在您的问题中发布预期输出的样本,然后让我们知道。@RavinderSingh13完成!尾随的
*
是多余的。我相信OP想要查找
wav
,而不是
wav1