在bash中更改文本文件中的特定行和行

时间:2016-08-17 07:46:32

标签: bash text-files

我有一个如下文本文件

01 02 03 04 05
11 22 33 44 55
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45

我的文本文件有五行五列,以空格分隔。现在我决定用99来改变第3行和第4列(我的意思是24)的值。

这意味着我的输出将是:

01 02 03 04 05
11 22 33 44 55
21 22 23 99 25
31 32 33 34 35
41 42 43 44 45

如果你能引导我,我感激不尽

此致

2 个答案:

答案 0 :(得分:0)

使用awk

$ awk 'NR == 3 { $4 = 99 } { print }' data.in >data.out

awk脚本将打印每一行,但如果找到第三行,它将首先将第四个值更改为99.

注意:NR表示"当前记录的序号",而不是"行号",但是因为默认情况下记录是一行,所以' ;在这种情况下是一样的。

答案 1 :(得分:0)

如果您不想在两行之间保留空白行,则以下操作应该有效。

awk 'NR==3 {$4=99}1' file

如果你想在两行之间保留空白行,那么下面应该有效。

grep . file | awk 'BEGIN{ORS="\n\n"}NR==3{$4="99"}1'
01 02 03 04 05

11 22 33 44 55

21 22 23 99 25

31 32 33 34 35

41 42 43 44 45