我有一个要求,我需要更改文件的内容,例如file.xyt。该文件包含以下值:
21 100 34 82
122 50 75 12
88 10 15 45
我需要查看每一行中的第四个参数(本例中为82,12和45)是否小于23。 如果是这样,我需要删除该特定行。
对于此示例,结果将是:
21 100 34 82
88 10 15 45
如何使用shell脚本实现此目的?提前致谢。
答案 0 :(得分:2)
您可以使用awk:
awk '$4 >= 23 {print}' file
可以缩短为(感谢@RomanPerekhrest):
awk '$4 >= 23' file
如果要编写文件,可以使用临时文件:
awk '$4 >= 23' file > tmp && mv tmp file
如果您有gawk
4.1.0或更高版本,则可以使用-i
标记来编辑文件 :
gawk -i '$4 >= 23' file
或使用Bash循环:
while read -r a b c d; do
[[ $d -ge 23 ]] && echo $a $b $c $d
done < file
答案 1 :(得分:0)
如果文件的每一行包含4个单独的数字,要修改初始文件,您可以使用以下 sed 方法:
sed -Ei '/\<(1{,1}[0-9]|2[0-2])$/d' file.xyt
file.xyt
内容:
21 100 34 82
88 10 15 45