2

正規表現を使用してテキストを取得するために必要なファイルがあります。ファイルをと呼びますx.txt。私がやりたいのは、開いx.txtて、ファイルから正規表現の一致を抽出し、それをパラメーターに設定することです。誰かが私にこれに関するいくつかの指針を与えることができますか?

編集

だからx.txt私は次の行を持っています

$variable = '1.2.3';

ファイルからbashスクリプトに抽出し1.2.3て、zipファイルに使用する必要があります

4

3 に答える 3

7

sedシングルパスで効率的に行うために使用します†</sup>:

var=$(sed -ne "s/\\\$variable *= *['\"]\([^'\"]*\)['\"] *;.*/\1/p" file)

上記は、値が一重引用符または二重引用符で囲まれているかどうかに関係なく機能します。

GNU Grepは選択したグループを出力できますか?も参照してください。。

$ cat dummy.txt
$bla = '1234';
$variable = '1.2.3';
blabla
$variable="hello!"; #comment

$ sed -ne "s/\\\$variable *= *['\"]\([^'\"]*\)['\"] *;.*/\1/p" dummy.txt
1.2.3
hello!

$ var=$(sed -ne "s/^\\\$variable *= *'\([^']*\)' *;.*/\1/p" dummy.txt)

$ echo $var
1.2.3 hello!

†または、選択したプラットフォームsedと比較した場合に、少なくともデータをチャーンするのと同じくらい効率的に。grep:)

于 2012-11-12T02:38:44.503 に答える
4

grep-chop-chopテクニックを使用できます

var="$(grep -F -m 1 '$variable =' file)"; var="${var#*\'}"; var="${var%\'*}"
于 2012-11-12T03:03:35.313 に答える
1

すべてのファイル行がその形式($<something> = '<value>')である場合、次のcutように使用できます。

value=$(cut -d"'" -f2 file)
于 2012-11-12T03:10:19.207 に答える