从文件中提取数据的LinuxBash脚本

从文件中提取数据的LinuxBash脚本,linux,bash,awk,sed,Linux,Bash,Awk,Sed,我正试图从文件1中提取数据,并将此数据粘贴到另一个文件中 文件1如下所示: [order1] Amount 4 HappyMeal yes; Sex "m" Name "Jack" [order2] Amount 1 HappyMeal yes; Sex "f" Name "Mar

我正试图从文件1中提取数据,并将此数据粘贴到另一个文件中

文件1如下所示:

[order1]
Amount              4
HappyMeal           yes;
Sex                 "m"
Name                "Jack"

[order2]
Amount              1
HappyMeal           yes;
Sex                 "f"
Name                "Mary"

[order3]
Amount              3
HappyMeal           no;
Sex                 "f"
Name                "Mary"
Customer    "Jack"   yes    m

Customer    "Mary"   yes    f
Customer    "Mary"   no     f
每个客户的某些行(不是全部)应该像这样粘贴到文件2中:

[order1]
Amount              4
HappyMeal           yes;
Sex                 "m"
Name                "Jack"

[order2]
Amount              1
HappyMeal           yes;
Sex                 "f"
Name                "Mary"

[order3]
Amount              3
HappyMeal           no;
Sex                 "f"
Name                "Mary"
Customer    "Jack"   yes    m

Customer    "Mary"   yes    f
Customer    "Mary"   no     f
我玩了以下游戏:

#!/bin/bash
ORDER_NR=`grep -o order[0-9]* file1`

for i in $ORDER_NR
do
    CUST_NAME=`awk -v RS='' '/\y${ORDER_NR}\y/' file1`

    echo "$CUST_NAME" >>file2
done
由于某种原因,我只得到一个空文件

最后,我希望sed替换模板文件中的一个变量

知道我为什么一直收到一个空文件吗?我认为它至少应该回显文件2中的
CUST\u NAME
变量。

试试这一行:

awk -v RS='\\[[^]]*\\]' 'NF{print "Customer",$8,$4,$6}' file
它给出:

Customer "Jack" yes; "m"
Customer "Mary" yes; "f"
Customer "Mary" no; "f"
它与您的输出不完全相同。然而,这将是一个很好的起点。做些调整你会得到你想要的