如何让AWK正确地交换字符串"更高"的数据文件的值。 (比以前)或"较小的" (比以前)"?
我正在尝试:
awk '{if ($1>prev); print ($1="greater"); prev="smaller"}' arraydatafile
arraydatafile文件:
2
7
6
1
7
3
期望的输出:
smaller
greater ##### because 7 is greater than previous which is 2 ..
smaller ##### because 6 is smaller than previous which is 7 ..
smaller ##### because 1 is smaller than previous which is 1 ..
greater ##### etc etc
smaller
我得到了一个简单的东西。
非常感谢您对此的见解。
更新:
有一个新的数据文件,用于澄清手头的任务:
arraydatafile:
2
7
6
6
1
7
3
期望的输出
smaller
greater
smaller
equal ##### will remove it later, would be nice if this could be done right from the script or one liner preferrably though
smaller
greater
smaller
如何在AWK中获得单行班轮?它只是将之前的那些与下一个相比较,并告诉它们与它们相比是什么。我会删除"等于"使用另一个衬管输出行而不是使这个小脚本复杂化,以简化当前的当前任务。
脚本replace.awk:
#!/bin/awk -f
NR>1 {
if($1==p){
# Skip identical lines
next
}
if($1>p){
print "smaller"
}else{
print "greater"
}
}
# Store previous value
{p=$1}
在arraydatafile上运行
7
6
6
1
7
3
产生以下
root@debian:/home/user/Documents/# awk -f replace.awk arraydatafile
smaller
greater
greater
smaller
greater
如何获得所需的输出?
答案 0 :(得分:1)
像这样:
{{1}}