如何只读取文件的倒数第二行

如何只读取文件的倒数第二行

myfile.csv我有一个任意更新/写入的客户端。

我编写了以下代码,我省略了 MySQL 片段:

while true
do
  awk_variables_value_array=`tail -n2 myfile.csv | awk -F, '$7 == "status" {print $4, $5, $10 }'`
  var1=${awk_variables_value_array[0]}
  var2=${awk_variables_value_array[1]}
  var3=${awk_variables_value_array[2]}

  if[ "var3" -gt "0" ]
  --MYSQL SNIPPET IS--
  fi
done

问: tail -n2读到最后的2行,我怎样才能改变它,所以它是倒数第二行

文件:

在哪里n是文件的最后一行

line 1
line 2
line 3
line 4
....
line n-2
line n-1
line n

当前输出产量:

line n-1
line n 

我希望输出是:

line n-1

答案1

怎么样tail -n2 myfile.csv | head -n1 | awk ....

答案2

sed 'x;$!d' <infile

那应该对你有用。

说明:
在每一行sedex更改缓冲区(交换保存空间和模式空间的内容),如果不在最后一行,它d会删除当前模式空间(因此不会打印任何内容)。仅在最后一行sed自动打印模式空间(包含前一行,即倒数第二行)

相关内容