2016-03-21 113 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