sed或awk,更新第1列数据

时间:2010-08-23 08:22:55

标签: sed awk

上周我读了关于sed的内容,现在,我使用sed从文件中提取一些,很好, 现在,我想将第一列中的数据更改为行号

1 3 3 0 0 0 1 3 35 34
16 3 3 0 0 0 34 35 33 19
31 3 3 0 0 0 19 33 71 68
46 3 3 0 0 0 68 71 72 69
61 3 3 0 0 0 69 72 73 70
76 3 3 0 0 0 70 73 67 53

并将第一列更改为1到6,如何在awk或sed中执行此操作? 最好, 了Umut

3 个答案:

答案 0 :(得分:6)

使用awk

awk '$1=NR' file

答案 1 :(得分:1)

此场景肯定awk。我使用sed完成此操作的最简单方法是以下形式。

cat file | sed "s/^[0-9]*//g;=;" | sed -n "N;s/\n//g;p"

第一个表达式删除第一个数字,并从读取管道中打印行号=

第二个sed表达式一次检索两行并删除换行符\n

这可能不是通过两个连续的表达式完成的,因为=命令直接将行号写入标准输出,而无法捕获。所以我不得不重新开始另一个sed电话。

答案 2 :(得分:0)

你可以尝试这样的事情 echo“1 3 3 0 0 0 1 3 35 34”| sed's / ^ 1 / A / g'

将A更改为您需要的数字,并假设第一列位于行的开头