我有一个.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}
?是否可以使用awk
或sort
?
我尝试过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)
。