2016-03-21 85 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並打印>之後是第四個字段。現在我不能只搜索>,因爲文件有100個,因爲它是html。如何編寫awk -F命令

確定也許有人可以回答這個問題,所以當我現在運行該文件時,它不會查看第四個字段,但它只是刪除所有'>'這不是目標,我試圖找到後面的字段3'>'這將是場4,但那不是我即將得到?任何幫助將是偉大的!

+0

awk應該在哪個輸入上運行?由於您將awk腳本包裝在雙引號中,所以shell正在擴展$ 4。沒有理由在變量中捕獲'awk'輸出來「回顯」它。 –

+0

它在一段時間內讀線;這樣做基本上我所擁有的是一大堆我正在排序的文本的輸入,所以我試圖把第三個'>'之後出現的第四個字段保存到一個變量中並打印該變量 – NewEffect

+0

想'awk「/>/{print $ 4}」'。只是從你的問題猜測。 – Brian

回答

2

AWK需要2份

  1. 選項
  2. 文件對

工作在你的榜樣,你給的選項,即分隔符,打印什麼,而是你沒有提到的文件與

試試這個

  1. 在命令提示

    cat file | awk -F ">" '{print $4}' 
    
  2. 在腳本

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

對於文本文件作爲 「文件」 含有數據作爲

a>b>c>d>e>f 

以上兩者將顯示'D'。

+2

這是[無用的貓](http://porkmail.org/era/unix/ award.html#貓)。 ** awk **將文件名作爲參數讀取。這是很好的:'結果= \'awk -F'>''{print $ 4}'file \'' – Jeff

+0

看到我可以在第四個字段後打印所有內容,但我需要它來打印第四個字段。 .. – NewEffect