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
。