1

私はLinuxにかなり慣れていません。単純なものが必要ですが、どこから始めればよいかわかりません。bash スクリプトでは、文字列 "VOL. " と "," の間の HTML ページの値を解析し、それを変数に渡す必要があります。

4

2 に答える 2

4
newvar=$(grep -oP 'VOL\.\K.*?(?=,)' file.txt)
echo "$newvar"

または文字列から:

newvar=$(grep -oP 'VOL\.\K.*?(?=,)' <<< "$string")
echo "$newvar"

よりポータブルなものが必要な場合:

newvar=$(perl -lne '/VOL\.\K.*?(?=,)/ && print $&' <<< "$string")
echo "$newvar"

正規表現の説明

  • VOL\.= リテラルVOL.:バックスラッシュなしの.= 任意の文字regex
  • \K = ゼロに一致を再開します。 https://stackoverflow.com/a/13543042/465183を参照してください
  • .*? = 任意の文字、0 から N 回出現しますが、?charと貪欲ではありません
  • (?=,)= charをルックアップするのは、肯定的な先読みアサーションです。,
于 2013-04-20T15:01:53.757 に答える
1

これは、bash の組み込みの正規表現マッチングを使用して実行できます。

if [[ "$var" =~ "VOL. "([^,]*)"," ]]; then
    match="${BASH_REMATCH[1]}"
fi
于 2013-04-20T17:00:04.453 に答える