我有10个文本文件,我希望paste每个文件都有一对,这样我就有5个文件.
我尝试了以下方法:
for i in 4_1 5_1 6_1 7_1 8_1
do
for j in 4_2 5_2 6_2 7_2 8_2
do
paste ${i}.txt ${j}.txt > ${i}.${j}.txt
done
done
Run Code Online (Sandbox Code Playgroud)
但是,此代码组合了所有可能的组合,而不是仅仅组合匹配对.
所以我想文件4_1.txt与配对4_2.txt,5_1.txt带5_2.txt等
我有以下输入文件,我希望打印每隔一个字段:
A=1=B=2=C=3
Run Code Online (Sandbox Code Playgroud)
获得以下输出:
1 2 3
Run Code Online (Sandbox Code Playgroud)
我努力了:
awk 'BEGIN {FS="="; OFS=" "} {for (i=2; i<=NF; i+=2); print ($i) }' input_file
Run Code Online (Sandbox Code Playgroud)
这显然行不通。我认为我的 for 循环部分是正确的,但我的打印部分有问题。
谢谢。
我想将一个文件中的记录号与另一个文件中的相同字段号匹配:
文件1:
1
3
5
4
3
1
5
Run Code Online (Sandbox Code Playgroud)
文件2:
A B C D E F G
H I J J K L M
N O P Q R S T
Run Code Online (Sandbox Code Playgroud)
我想使用5第一个文件中对应的记录号来获取第二个文件中的相应字段.期望的输出:
C G
J M
P T
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经完成了:
awk '{ if ($1=="5") print NR }' file1 > temp
for i in $(cat temp); do
awk '{ print $"'${i}'" }' file2
done
Run Code Online (Sandbox Code Playgroud)
但得到输出:
C
J
P
G
M
T
Run Code Online (Sandbox Code Playgroud)
我希望以上面所需输出的格式,但无法使其工作.也许使用prinf或awkfor循环可能有效,但我没有成功.
谢谢你们.
为了说明我的问题,这是一个简单的例子:
cat file1.txt
user1
user2
user3
user4
Run Code Online (Sandbox Code Playgroud)
cat file2.txt
user1 0
user2 3
user3 8
user6 9
Run Code Online (Sandbox Code Playgroud)
awk 'NR==FNR { a[$1]=$2; next } { print $1, a[$1] ? a[$1] : "NA" }' file2.txt file1.txt
user1 NA
user2 3
user3 8
user4 NA
Run Code Online (Sandbox Code Playgroud)
我需要0在user1之后打印,但它打印NA好像user1没有退出file2.txt
我确信有一个简单的解决方案,但为什么会这样呢?
PS.我知道grep -f这里的解决方案,但我只是想知道我在数组中做错了什么.
是否可以使用awk打印整个领域的产品?
这在R中很简单,但如果可以在awk中完成,则调用R脚本会很麻烦.
样本输入:
gene1 0.9
gene2 0.8
gene3 0.4
gene4 0.2
Run Code Online (Sandbox Code Playgroud)
期望的输出(0.9 x 0.8 x 0.4 x 0.2):
0.0567
Run Code Online (Sandbox Code Playgroud)
它会与sum语法类似吗?喜欢
awk '{ sum +=$2 } END { print sum }'
Run Code Online (Sandbox Code Playgroud)
但使用mult而不是?