小编Ris*_*ish的帖子

在bash中循环使用多对值

我有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.txt5_2.txt

bash for-loop paste nested-loops

16
推荐指数
5
解决办法
1万
查看次数

使用 awk 打印每隔一个字段

我有以下输入文件,我希望打印每隔一个字段:

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 循环部分是正确的,但我的打印部分有问题。

谢谢。

awk for-loop

3
推荐指数
1
解决办法
1121
查看次数

匹配两个文件中的行和字段

我想将一个文件中的记录号与另一个文件中的相同字段号匹配:

文件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)

我希望以上面所需输出的格式,但无法使其工作.也许使用prinfawkfor循环可能有效,但我没有成功.

谢谢你们.

awk

2
推荐指数
1
解决办法
40
查看次数

包含0的awk数组打印为空白空间

为了说明我的问题,这是一个简单的例子:

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这里的解决方案,但我只是想知道我在数组中做错了什么.

arrays awk

2
推荐指数
1
解决办法
45
查看次数

如何使用awk打印字段产品?

是否可以使用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而不是?

awk

0
推荐指数
1
解决办法
262
查看次数

标签 统计

awk ×4

for-loop ×2

arrays ×1

bash ×1

nested-loops ×1

paste ×1