AWK简单换行

时间:2018-01-14 18:47:52

标签: awk

如何让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

如何获得所需的输出?

1 个答案:

答案 0 :(得分:1)

像这样:

{{1}}