我在一个扩展名为. 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 =
你的问题中有很多未陈述的要求,但这可能是你想做的:
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
上面都假设您的文件名中没有换行符。