如果其中一个字段小于某个值,如何打印列中的某些字段?
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}
?是否可以使用 awk
或 sort
?
我尝试了一些 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)
.
我有一个 .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}
?是否可以使用 awk
或 sort
?
我尝试了一些 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)
.