小编use*_*722的帖子

在unix中的两个固定格式文件中查找字段值 - 不起作用

我有2个固定长度的文件输入#1和输入#2.我想根据两个文件中位置37-50的值来匹配行(pos 37-50在两个文件中都有相同的值).

如果找到任何匹配记录,则根据输入文件#1(位置99直到行尾)的公司代码和发票编号剪切该值.

剪切字符串(来自输入#1)需要附加在记录/行的末尾.

下面是我尝试的代码(不工作)以及输入文件和所需的输出.请提供您的建议.

码:

awk '
NR==FNR && NF>1 {
    v=substr($0,37,14);
#print substr($0,37,14)
    next
}
NR==FNR && ( /Company Code/ OR /Invoice Number/ ) {
    sub(/Company Code/,"",$0);
    sub(/Invoice Number/,"",$0);
    a[v]=$0;
print $0
    next
}
(substr($0,37,14) in a) {
    print $0 a[substr($0,99)]
}' Input1.txt input2.txt input3.txt
Run Code Online (Sandbox Code Playgroud)

结束代码

输入#1 以一些空格开头的 Start

         612  1111111111201402120000       2     1  111  211 Due Date                             20140101                           
         612  1111111111201402120000       2     1  111  311 Company Code                         227                                
         612  1111111111201402120000       2     1  111  411 Item Code                            12                                 
         612 …
Run Code Online (Sandbox Code Playgroud)

unix shell awk

6
推荐指数
1
解决办法
361
查看次数

标签 统计

awk ×1

shell ×1

unix ×1