Awk在两个文件之间减去许多列
如果我有两个文件,每个文件中有4列数据,我想在这些文件之间减去列,我会执行以下操作:Awk在两个文件之间减去许多列,awk,Awk,如果我有两个文件,每个文件中有4列数据,我想在这些文件之间减去列,我会执行以下操作: paste data1.txt data2.txt | awk '{ printf("%s %d %d %d\n", $1, ($2-$6), ($3-$7), ($4-$8); }' > out.txt 如果我有一个文件,每个文件有100列,并且我想在两个文件之间分写列,而不写那么多($I-$j),($k-$l)等等,我应该如何做类似的事情呢 谢谢。使用循环。您需要传入列数 awk -v cols=1
paste data1.txt data2.txt | awk '{ printf("%s %d %d %d\n", $1, ($2-$6), ($3-$7), ($4-$8); }' > out.txt
如果我有一个文件,每个文件有100列,并且我想在两个文件之间分写列,而不写那么多($I-$j),($k-$l)等等,我应该如何做类似的事情呢
谢谢。使用循环。您需要传入列数
awk -v cols=100 '{
printf "%s", $1
for (i=2; i <= cols; i++)
printf "%s%d", OFS, $i - $(cols+i)
printf "\n"
}'
awk-v cols=100'{
printf“%s”,1美元
为了(i=2;iawk
救援
假设您的file1比file2多了一列,并且您正在区分file1和file2对应的列
$ paste file1 file2 |
awk '{n=int(NF/2); printf "%s", $1;
for(i=2;i<=n+1;i++) printf "%d" ,OFS ($i-$(i+n)); printf "\n"}'
$paste file1 file2|
awk'{n=int(NF/2);printf“%s”,$1;
对于(i=2;i使用getline
;大致基于我找到的答案:
文件2:
21 22 23 24
31 32 33 34
输出:
10 11 12 13
20 21 22 23
for(i=1;i@karakfa谢谢,我不知道!我相应地调整了我的答案。
31 33 35 37
51 53 55 57
21 22 23 24
31 32 33 34
10 11 12 13
20 21 22 23