[英]How to join 2 text files using bash scripting?
我想結合2個文件,並在1個文件[只有2場(放在一起$4
和$5
的FILE A
, $2
和$3
在FILE B
)是兩個文件之間的普通的事。 參見下面的期望輸出。
X 2134 101L 12345.00 22222.00 1 10
X 2134 101L 12345.00 22222.00 11 20
X 2134 101L 12345.00 22222.00 21 30
X 2134 111L 77777.00 22222.00 1 10
X 2134 111L 77777.00 22222.00 11 20
X 2134 111L 77777.00 22222.00 21 30
X 2134 121L 56347.00 46678.00 1 10
X 2134 121L 56347.00 46678.00 11 20
X 2134 121L 56347.00 46678.00 21 3
3333 12345 22222 54367.05 34765.05
3333 34567 12235 54298.05 34568.05
3333 77777 22222 52765.05 32567.05
3333 55555 11111 52875.05 36547.05
3333 56347 46678 53789.05 34566.05
3333 2134 10 12345 22222 54367.05 34765.05
3333 NA NA 34567 12235 54298.05 34568.05
3333 2134 11 77777 22222 52765.05 32567.05
3333 NA NA 55555 11111 52875.05 36547.05
3333 2134 12 56347 46678 53789.05 34566.05
嗨,大家好,我加一張照片,希望它能很好地描述我的要求。 感謝所需的輸出
下面的腳本將適用於上述情況。
while read line
do
value1=`echo $line |awk '{print $1}'`
value2=`echo $line |awk '{print $2}'`
value4=`echo $line |awk '{print substr($0, index($0,$3))}'`
value3=`grep $value2 fileA.txt|head -n 1|awk '{print $2" "$3}'|sed 's/1L//'`
if [ "$value3" == "" ];then
echo $value1" NA NA "$value4 >> result.txt
else
echo $value1" "$value3" "$value2" "$value4 >> result.txt
fi
done<fileB.txt
輸出:
3333 2134 10 12345 22222 54367.05 34765.05
3333 NA NA 12235 54298.05 34568.05
3333 2134 11 77777 22222 52765.05 32567.05
3333 NA NA 11111 52875.05 36547.05
3333 2134 12 56347 46678 53789.05 34566.05
PS:使用bash而不是sh運行此腳本。
awk
解救!
$ awk 'NR==FNR{$4=$4+0;$5=$5+0;
if(!(($4,$5) in a)) a[$4,$5]=$2 FS $7;;next}
{$2=((($2,$3) in a)?a[$2,$3]:"NA" FS "NA") FS $2}1' file{A,B}
3333 2134 10 12345 22222 54367.05 34765.05
3333 NA NA 34567 12235 54298.05 34568.05
3333 2134 10 77777 22222 52765.05 32567.05
3333 NA NA 55555 11111 52875.05 36547.05
3333 2134 10 56347 46678 53789.05 34566.05
您想從文件A中獲得多個匹配項的第一個匹配項,那么兩個文件中的字段格式都不匹配(小數點與整數)。
如果您管道到... | column -t
... | column -t
3333 2134 10 12345 22222 54367.05 34765.05
3333 NA NA 34567 12235 54298.05 34568.05
3333 2134 10 77777 22222 52765.05 32567.05
3333 NA NA 55555 11111 52875.05 36547.05
3333 2134 10 56347 46678 53789.05 34566.05
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.