如何将另外6个单独空格分隔列添加到文件中。
输入文件如下所示:
-11.160574
...
-11.549076
-12.020907
...
-12.126601
...
-11.93235
...
-8.297653
...
代表另外50行数字。
我想要的输出是:
-11.160574 1 1 1 1 1 14
...
-11.549076 51 51 1 1 1 14
-12.020907 1 1 2 2 1 14
...
-12.126601 51 51 2 2 1 14
...
-11.93235 1 1 51 51 1 14
...
-8.297653 51 51 51 51 1 14
第2列和第3列是1到51的循环。
第4和第5列也是1到51的循环,但是在上面的上层。
最后两个常量列为1和14列。
答案 0 :(得分:1)
使用循环逐行读取文件并维护计数器以跟踪字段编号,如下所示:
#!/bin/bash
field1=1
field2=1
while read line
do
echo "$line $field1 $field1 $field2 $field2 1 14"
(( field1++ ))
if (( $field1 == 52 )); then
field1=1
(( field2++ ))
fi
done < file
答案 1 :(得分:1)
你走了,一个awk脚本:
{
mod = 51
a = (NR - 1) % mod + 1
b = int((NR - 1) / mod) + 1
c = 1
d = 14
print $0,a,a,b,b,c,d
}
使用awk -f the-script.awk in-file.txt
之类的内容运行它。或者将其设为可执行文件并在顶部添加#!/usr/bin/awk -f
,您可以直接运行它而无需键入awk -f
。