问题描述
所以我想在特定图案之后找到图案
例如输入文件为
/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
使用
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开头,所以我找不到w ;;;
之后的位置。
如何在模式(';;;')之后找到模式('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
;
grep ';;;.*wav' file.txt
如果您有grep -P
,则可以使用Perl正则表达式技巧;以下内容只会突出显示实际的wav
匹配项:
grep -P ';;;.*\Kwav' file.txt
如果只想提取;;;
之后的部分,可以使用sed
;
sed -n 's/.*;;;//;/wav/p' file.txt
在正则表达式周围通常最好使用单引号,以避免外壳与正则表达式混淆(双引号较弱,不会保护反斜杠,反引号或许多美元符号)。
,对于GNU grep,先匹配;;;
,然后匹配任何.*
的文本,然后再使用wav1
匹配\bwav1\b
,以确保您不匹配wav12
:
grep -P ';;;.*\bwav1\b' yourfile.txt
P
选项表示将使用PCRE引擎。
我相信
model.addAttribute("ListOfThreeProducts",products);
足够了。