Awk 基于另一列从列中提取数据
我有一些文件如下所示。我想根据$1提取$5的值 文件1 文件2 我使用以下代码提取了$5Awk 基于另一列从列中提取数据,awk,Awk,我有一些文件如下所示。我想根据$1提取$5的值 文件1 文件2 我使用以下代码提取了$5 awk '$1 == "rehna" { print $5 }' * awk '$1 == "sam" { print $5 }' * 我希望得到如下所示的输出 rehna sam 26.0 19.8 37.6 69.9 5.0 30.9 我如何做到这一点?您的建议将不胜感激 更新:此后,本着。如果你想了解更多的背景信息,请继续阅读 假设Bash、Ksh
awk '$1 == "rehna" { print $5 }' *
awk '$1 == "sam" { print $5 }' *
我希望得到如下所示的输出
rehna sam
26.0 19.8
37.6 69.9
5.0
30.9
我如何做到这一点?您的建议将不胜感激 更新:此后,本着。如果你想了解更多的背景信息,请继续阅读
假设Bash、Ksh或Zsh是shell:
printf '%s\t%s\n' 'rehna' 'sam'
paste \
<(awk '$1 == "rehna" { print $5 }' *) \
<(awk '$1 == "sam" { print $5 }' *)
如果任何输入文件的行数不足,它将提供空行
在本例中,
awk
命令的相应输出用作输入文件,使用(最简单的方法可能是将结果粘贴在一起:
#!/bin/bash
function myawk {
awk -v name="$1" 'BEGIN {print name} $1 == name { print $5 }' file1 file2
}
paste <(myawk rehna) <(myawk sam)
!/bin/bash
函数myawk{
awk-v name=“$1”'开始{print name}$1==name{print$5}文件1文件2
}
粘贴
printf '%s\t%s\n' 'rehna' 'sam'
paste \
<(awk '$1 == "rehna" { print $5 }' *) \
<(awk '$1 == "sam" { print $5 }' *)
<line 1 from fileA>\t<line 1 from fileB>
<line 2 from fileA>\t<line 2 from fileB>
...
#!/bin/bash
function myawk {
awk -v name="$1" 'BEGIN {print name} $1 == name { print $5 }' file1 file2
}
paste <(myawk rehna) <(myawk sam)