次のコマンドがあります。
unzip -p GLP.K4C.S06F5.BG57218-rdf.zip | grep ":taxonomies-" | head -1
これは私に出力を与えます。
<j.2:Taxo_Version rdf:resource="refmat:taxonomies-8.2.0"/>
しかし、抽出するだけです。分類-8.2.0上記の完全な文字列の代わりに。
ベストアンサー1
-o
1つの方法は、grepのオプションを次のように組み合わせて使用することです。PCRE( -P
):
-o, --only-matching
Print only the matched (non-empty) parts of a matching line,
with each such part on a separate output line.
-P, --perl-regexp
Interpret PATTERN as a Perl regular expression (PCRE, see
below). This is highly experimental and grep -P may warn of
unimplemented features.
だから、あなたはこれを行うことができます
unzip -p GLP.K4C.S06F5.BG57218-rdf.zip | grep -oP ':\Ktaxonomies-[^"]*' | head -1
\K
その点まで一致するすべての項目が無視され(したがって:
印刷されない)、「[^"]*"
文字以外の文字をできるだけ一致させる」ことを意味します。"
その他のオプションは次のとおりです。
sed
unzip -p GLP.K4C.S06F5.BG57218-rdf.zip | sed -n 's/.*:\(taxonomies-[^"]*\).*/\1/p' | head -1
明示的に指示しない限り、何も印刷されず、
-n
代替演算子です。行のすべての内容を括弧()の間の部分で置き換えます。これにより結果行が印刷されます。sed
s///
\1
p
パール
unzip -p GLP.K4C.S06F5.BG57218-rdf.zip | perl -lne 's/.*:(taxonomies-[^"]).*/$1/ && print' | head -1
のような基本的なアイデアです
sed
。交換が成功したら、ラインを印刷します。別のオプションはunzip -p GLP.K4C.S06F5.BG57218-rdf.zip | perl -lne '/.*:(taxonomies-[^"])/ && print $1' | head -1