正規表現で未知の部分文字列を取得するにはどうすればよいですか?私は望む文字列の前後に何があるのか知っていますが、結果には既知の部分は望んでいません。RegExで未知の部分文字列を一致させる
例のテキスト:
jhgjgjgvocher_SOMETHINGHERE.dbhjjkghjkg
vocher_SOMETHINGELSE.db
私は 'SOMETHINGHERE' と 'SOMETHINGELSE' だけを探しています。
vocher_
および.db
は、常に関連する部分の前後にありますが、結果には含まれません。
cat test | egrep -o "vocher_.*\.db" | cut -d "_" -f2 | cut -d "." -f1
...しかし、あなたはそれが醜いことを知っている:
ワーキングソリューションです。
正規表現(この場合は.*
部分のみ)で未知の部分を正確に検索することは可能ですか、それともsedのようなものを使用する必要がありますか?より良い解決策はありますか?この反復行ずつファイル上
perl -ne 'if (/vocher_(.*)\.db/){ print "$1\n";}' test_file.txt
と所望の部分のみを印刷する:Perlを使用して
「grep -oP」(?<= vocher _)。*?(?= \。db)で置き換えてみてください。 " –
@Wiktor:そうですが、いいえアスタリスクの後に疑問符が必要です。 – JosefScript
も参照してください。[SO docのLookaheadとLookbehindの例](https://stackoverflow.com/documentation/regex/639/lookahead-and-lookbehind#t=201702220503256206195) – Sundeep