如果其中一个字段小于某个值,如何打印列中的某些字段?

How to print certain fields in a column if one of the fields is less than a certain value?

我有一个 .txt 文件,其中包含格式为

的大约 100 所大学的数据
{COLLEGE NAME} {CITY, STATE} {RANK} {TUITION} {IN STATE TUITION} {ENROLLMENT}

例如这里有两行

YeshivaUniversity "New York, NY" 66 ",670 "  "2,744" 
FordhamUniversity "New York, NY" 60 ",317 "  "8,855"

还有 98 行,输出应该return所有学费低于 $30000 的大学?

假设字段分隔符是space,我如何打印{TUITION}小于,000的大学的{COLLEGE NAME} {CITY, STATE} {TUITION}?是否可以使用 awksort?

我尝试了一些 awk 和运算符 <= 的组合,但每次都会出错。例如

$ awk -F" " '{print , , <=30000}' data1a.txt

给我一个语法错误。

使用 GNU awk,因为它有 FPAT:

$ gawk '
BEGIN {
    FPAT="([^ ]*)|(\"[^\"]+\")"
}
{
    tuition=                    # separate 4th column for cleaning
    gsub(/[^0-9]/,"",tuition)     # clean non-digits off
    if(tuition<30000)             # compare
        print                     # and output
}'

示例数据的输出:

(下次请post这样的样本,它有正例和负例。)

此外,评论中提到:由单个 space 分隔并且您在大学 的名称中有一个 space。当我看到您的问题时,情况不再如此,但是可以通过从末尾计算字段来解决,即。 </code> 将是 <code>$(NF-1).