sed或awk,更新第一列数据

sed或awk,更新第一列数据,sed,awk,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你可以试试这样的

我上周读到了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

你可以试试这样的东西
回音“133000353534”| sed的/^1/A/g

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

使用awk

awk '$1=NR' file

对于这种情况,绝对是
awk
。我可以用
sed
实现这一点的最简单方法如下所示

cat file | sed "s/^[0-9]*//g;=;" | sed -n "N;s/\n//g;p"
其中,第一个表达式删除第一个数字,并从读取管道打印行号
=

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


这可能不是通过两个连续表达式实现的,因为
=
命令直接将行号写入标准输出,而标准输出无法捕获。因此,我不得不再次调用另一个
sed
调用。

如果我想在循环中执行此操作,我将在行上循环,并以这种方式更新第一列,它是行的开头。我想awk是一个更好的选择,因为语言中有一些结构。我不确定……而第一列并不总是从1开始。@ UMUT:如果这个答案解决了你的问题,考虑通过点击它旁边的复选框来接受它。(+1 Awk是此作业的正确工具。)