提问者:小点点

使用不同的扩展文件随机添加数据


我在一个扩展名为. trm1和.trm2的目录中有近1000个数据文件,两个扩展名文件都包含两列数据(如data1和data2)。无论如何,我不想打扰两个扩展名文件的data1。现在我想选择任何.trm2文件的列-2(data2)随机,并尝试将其添加到任何.trm1扩展名文件的列-2(data2)中,输出应保存在.trm1trm2中(其中列1(data1)应包含.ext1文件中已经存在的内容,列2(data2)应包含添加的数据。我想为所有扩展名为.trm1的文件做同样的事情。我的数据示例和代码如下:提前感谢。

file1.trm1             file4.trm2                 outputfile.trm1trm2
data1  data2           data1   data2               data1      data2
20     2.5             20       3.9                 20         6.4
40     1.5             12       3.4                 40         4.9
10     1.2             24       1.5                 10         2.7
34     1.1             32       6.9                 34         8.0



#!/bin/sh

for file in /home/lijun/datadir/*.trm2
do
awk '{print $2}' $file
    for file1 in /home/lijun/datadir/*.trm1
    do
    awk '{print $2}' $file1 
    sum =

共1个答案

匿名用户

你的问题中有很多未陈述的要求,但这可能是你想做的:

trm2s=( *.trm2 )
for trm1 in *.trm1; do
    trm2=$(printf '%s\n' "${trm2s[@]}" | shuf | head -1)
    paste "$trm1" "$trm2" |
    awk 'NR>1{$2+=$4} {print $1, $2}' > "${trm1%.trm1}_${trm2%.trm2}.trm1trm2"
done

或者也许:

trm2s=( *.trm2 )
for trm1 in *.trm1; do
    while IFS= read -r trm2; do
        paste "$trm1" "$trm2" |
        awk 'NR>1{$2+=$4} {print $1, $2}' > "${trm1%.trm1}_${trm2%.trm2}.trm1trm2"
    done < <(printf '%s\n' "${trm2s[@]}" | shuf)
done

上面都假设您的文件名中没有换行符。