我的文字如下:
a text is present
for a few lines
which I dont want
to edit
1 2 ab
2 3 ab
3 4 ab
4 5 ab
5
6
7
8
现在我想在第二列中生成数字的升序,并使第三列填充字符串“ab”,如下所示。
a text is present
for a few lines
which I dont want
to edit
1 2 ab
2 3 ab
3 4 ab
4 5 ab
5 6 ab
6 7 ab
7 8 ab
8 9 ab
答案 0 :(得分:2)
这可能是您正在寻找的内容:
$ awk '{$2=($2?$2:p[2]+1); $3=($3?$3:p[3]); split($0,p)} 1' file
1 2 ab
2 3 ab
3 4 ab
4 5 ab
5 6 ab
6 7 ab
7 8 ab
8 9 ab
鉴于你在第100行开始上述转换的新要求:
awk 'NR>99{$2=($2?$2:p[2]+1); $3=($3?$3:p[3]); split($0,p)} 1' file
答案 1 :(得分:1)
awk中的另一个人:
linedata = line.Split(',');
您可以使用lineData = line.Split(separators, StringSplitOptions.None);
控制起始记录,也可以控制您想要开始使用的行。
答案 2 :(得分:0)
使用vim:
:g/\d\+\s*$/ %s:\v\d+ (\d+) ab\_s*\d\s*$\zs:\=printf(" %d ab",submatch(1)+1):
答案 3 :(得分:0)
在vim中:
qa
:%s/\v( \d+.+)(\n\d+)$/\1\2\1/
w<C-a>
@a
q
@a
这是一个递归宏,它填充第一行只有一列,上面一行有第二列和第三列,然后递增第二列。