1

これらの行の最後の単語を表示したいのですが、単語の値などを調べようとしましたが、答えがないので、引用符の間の単語を探すことを考えましたが、ファイルには引用符の間に他の単語が含まれていますが、実際には必要ありません私のhtmlファイルであることを知っているselectタグの値を表示します。

grep '*' hosts.html | awk '{print $NF}'

例えば:

value='www.visit-tunisia.com'>www.visit-tunisia.com 
value='www.watania1.tn'>www.watania1.tn 
value='www.watania2.tn'>www.watania2.tn 

してただろう

www.visit-tunisia.com 
www.watania1.tn 
www.watania2.tn 
4

3 に答える 3

0
sed 's/.*>\(.*\)/\1/g' your_file
于 2013-03-25T11:09:40.387 に答える
0

オプション>でこれを行うには、フィールドセパレーターを設定する必要があります。-F

$ awk -F'>' '{print $NF}' hosts.html
www.visit-tunisia.com
www.watania1.tn
www.watania2.tn

注:何を達成しようとしているのかわかりませんかgrep '*' hosts.html

于 2013-03-25T10:38:31.973 に答える
0

コメントを自由に解釈すると、以下を含む可能性のある入力行があります。

value='www.visit-tunisia.com'>www.visit-tunisia.com
value='www.watania1.tn'>www.watania1.tn
value='www.watania2.tn'>www.watania2.tn

出力として行に繰り返される名前が必要です。

www.visit-tunisia.com
www.watania1.tn
www.watania2.tn

sedこれは、括弧を使用してキャプチャすることで実行できます。

sed -n -e "s/.*'\([^']*\)'.*\1.*/\1/p"

-n私が言わない限り、印刷しないでください」と書かれています。コマンドはs///p、代替が機能するかどうかを出力します。このパターンは、「何か」 ( .*) のストリーム、一重引用符、次の一重引用符 ( '\([^']*\)') までの内容をキャプチャし、その後に任意のテキスト、キャプチャされたテキスト (最初の\1)、および何かを探します。置換テキストはキャプチャされたものです (2 番目の\1)。

例:

$ cat data
www and wotnot
value='www.visit-tunisia.com'>www.visit-tunisia.com
blah
value='www.watania1.tn'>www.watania1.tn
hooplah
value='www.watania2.tn'>www.watania2.tn
if 'nothing' is required, nothing will be done.
$ sed -n -e "s/.*'\([^']*\)'.*\1.*/\1/p" data
www.visit-tunisia.com
www.watania1.tn
www.watania2.tn
nothing
$

[^']*明らかに、必要に応じて一致の一部を絞り込むことができます。パターンは一重引用符で一致するため、式を二重引用符で囲みました。一重引用符と二重引用符の両方を許可する必要がある場合、人生はより複雑になります。その時点で、スクリプトをファイルに入れて実行sed -f script dataし、作業を楽にしていました。

于 2013-03-25T10:38:43.817 に答える