上周我读了关于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
答案 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更改为您需要的数字,并假设第一列位于行的开头