3ks*_*stc 10 awk text-processing
我有一个客户端可以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
Run Code Online (Sandbox Code Playgroud)
问: tail -n2
读取最后两行,我该如何更改它,使其成为倒数第二行
文件:
其中n是文件的最后一行
line 1
line 2
line 3
line 4
....
line n-2
line n-1
line n
Run Code Online (Sandbox Code Playgroud)
当前输出产量:
line n-1
line n
Run Code Online (Sandbox Code Playgroud)
我希望它的输出是:
line n-1
Run Code Online (Sandbox Code Playgroud)
sed 'x;$!d' <infile
Run Code Online (Sandbox Code Playgroud)
那应该对你有用。
解释:
在每一行sed
ex
更改缓冲区(交换保持空间和模式空间的内容),如果不是在最后一行,它会d
删除当前模式空间(因此不会打印任何内容)。仅在最后一行自动sed
打印模式空间(包含前一行,即倒数第二行)