2016-03-21 4 views
0
#!/bin/bash 
cat $1 | awk ' /Info/, /<\/Body>/ {print $0}' | while read line; do 

    file=`awk -F '>' "{print $4}"` 

    echo "$file" 

done 

基本的にfileの入力ファイルには、awkの最初の行で削除された情報があります。今私がしようとしているのは、awk -Fを使って変数を見つけて、第4フィールドである>の後に来るものを表示することです。今は>を検索することはできません。なぜなら、htmlファイルなので100sのファイルがあるからです。awk -Fコマンドの書き方

okこれは私がファイルを実行するときに誰かがこれを答えることができるようになりましたが、それは4番目のフィールドは見えませんが、目標ではないすべての '>'が削除されます。 3 '>'それはフィールド4になるだろうが、それは何を得るのではないですか?どんな助けも素晴らしいだろう!

+0

「awk」はどんな入力を入力する必要がありますか?あなたが二重引用符でawkスクリプトをラップするので、 '$ 4'はシェルによって拡張されています。 awk出力を 'echo 'する変数に取り込む理由はありません。 –

+0

その読み取り線。基本的に私が持っているものは、ソートしているテキストの量が多いため、第3フィールドの「4番目のフィールド」を取って変数に保存し、その変数を保存しようとしています – NewEffect

+0

'awk" />/{print $ 4} "が必要です。あなたの質問からちょうど推測。 – Brian

答えて

2

AWKはあなたの例では

上で動作するファイルのオプション

  • 2部

    1. を必要とし、あなたは何を印刷するためのオプションすなわち区切り文字を、与えているが、あなたはどのファイルを言及していません

      で動作するようにすると、この

        をお試しくださいデータを含む "ファイル" などのテキストファイルのスクリプト

        result=`cat file | awk -F ">" '{print $4}'` 
        echo $result 
        

      cat file | awk -F ">" '{print $4}' 
      
    2. a>b>c>d>e>f 
      

      両方の上に表示されるように、コマンドプロンプトで

    3. 'd'。

  • +2

    これは[catの無駄な使い方です](http://porkmail.org/era/unix/ award.html#cat) ** awk **は引数として読むためにファイル名をとります。これはうまくいきます: 'result = \' awk -F '>' '{print $ 4}'ファイル\ '' – Jeff

    +0

    4番目のフィールドの後にすべてを印刷できますが、4番目のフィールドを印刷する必要があります。 .. – NewEffect

    関連する問題