例如原始数据文件
file.org
:
1 2 3 4 5
6 7 8 9 0
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
在第2列中插入三个数据点(0) 输出文件应如下所示
file.out
:
1 0 3 4 5
6 0 8 9 0
11 0 13 14 15
16 2 18 19 20
21 7 23 24 25
请帮助。
答案 0 :(得分:3)
以下awk
将达到目的:
awk -v n=3 '{a[NR]=$2; $2=a[NR-n]+0}1' file
答案 1 :(得分:2)
$ awk -v n=3 '{x=$2; $2=a[NR%n]+0; a[NR%n]=x} 1' file
1 0 3 4 5
6 0 8 9 0
11 0 13 14 15
16 2 18 19 20
21 7 23 24 25
答案 2 :(得分:0)
编辑:由于OP已编辑问题,因此请根据新问题添加解决方案。
awk -v count=3 '++val<=count{a[val]=$2;$2=0} val>count{if(++re_count<=count){$2=a[re_count]}} 1' Input_file
输出如下。
1 0 3 4 5
6 0 8 9 0
11 0 13 14 15
16 2 18 19 20
21 7 23 24 25
请您尝试以下。
awk -v count=5 '
BEGIN{
OFS="\t"
}
$2{
val=(val?val ORS OFS:OFS)$2
$2=0
occ++
$1=$1
}
1
END{
while(++occ<=count){
print OFS 0
}
print val
}' Input_file
输出如下。
1 0 3 4 5
6 0 8 9 0
11 0 13 14 15
0
0
2
7
12