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



我有一个.txt文件,其中包含大约100所大学的格式的数据

{COLLEGE NAME} {CITY, STATE} {RANK} {TUITION} {IN STATE TUITION} {ENROLLMENT}

例如,这里有两行

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

还有98条线,产出应该退还所有学费低于30000美元的大学吗?

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

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

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

给了我一个语法错误。

使用GNU awk,因为它有FPAT:

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

样本数据输出:

(下次,请张贴有阳性和阴性病例的样本。(

此外,评论中提到:用单个空格分隔,你有一个大学名称的空格。当我看到你的问题时,情况已经不是这样了,但这可以通过从末尾计算字段来解决,即$4将是$(NF-1)

最新更新