通过shell脚本更改文件的内容

时间:2017-07-16 04:46:39

标签: linux bash shell

我有一个要求,我需要更改文件的内容,例如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脚本实现此目的?提前致谢。

2 个答案:

答案 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