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 中执行此操作? 最好的, 乌穆特
I read about sed last week and now, I do some extraction from a file using sed, that is fine,
Now, I would like to change the data in the first column to the line number say
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
and change the first column to 1 to 6, how can I do this in awk or sed?
Best,
Umut
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 awk
use awk
对于这种情况,
awk
无疑是合适的。我使用 sed 完成此任务的最简单方法是采用以下形式。其中第一个表达式删除第一个数字,并从读取管道打印行号
=
。第二个
sed
表达式一次检索两行并删除换行符\n
。这不可能通过两个连续的表达式来完成,因为
=
命令直接将行号写入标准输出,而无法捕获。所以我不得不再次进行另一个 sed 调用。Definitely
awk
for this scenario. The easiest way I could accomplish this withsed
was in the following form.Where the first expression deletes the first number, and prints the line number
=
from the read pipe.The second
sed
expression retrieves two lines at a time and removes the newline\n
.This could have not been done through two consecutive expressions because the
=
command directly writes the line number to the standard output, which cannot be captured. So I had to recur to anothersed
call.你可以尝试这样的事情
回显“1 3 3 0 0 0 1 3 35 34”| sed 's/^1 /A /g'
将 A 更改为您需要的数字,我假设第一列位于行的开头
You can try something like this
echo "1 3 3 0 0 0 1 3 35 34 " | sed 's/^1 /A /g'
Change A to the Number you need and i assume the first column is in the beginning of the line