Linux bash脚本从文件中提取数据

时间:2016-02-22 13:53:11

标签: linux bash awk sed

我正在尝试从文件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"

每个客户的某些行(不是全部)应该粘贴到文件2中,如下所示:

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_NAME变量。

1 个答案:

答案 0 :(得分:0)

试试这行:

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

它给出了:

Customer "Jack" yes; "m"
Customer "Mary" yes; "f"
Customer "Mary" no; "f"

它与您的输出不完全相同。不过,这对你来说是个好点。做一些调整,你会得到你想要的。