有效地在linux中读取和操作大文件

时间:2012-10-15 18:30:51

标签: linux file

我有两个文件

文件1:

030055 a
033366 b

文件2:

03005515077 x||03215549849 y||03336678899 z||03005577733 xx||03005583838 yy

需要Shell脚本逐行读取文件1(030055 a),分隔数字值(030055),在文件2中找到它。如果找到,请将字符值替换为'030055 a'中的'a'

实施例: File1的第一条记录:030055 a 将其与文件2进行比较,此编号模式匹配的记录如下:

03005515077 x和03005577733 xx和03005583838 yy

只需将x,xx和yy替换为a,它将变为

03005515077 a和03005577733 a和03005583838 a

1 个答案:

答案 0 :(得分:1)

沿着这些方向的东西(未经测试);

#!/bin/bash

while read line
do
    COL1 = `cat $line | awk '{print $1}'`
    COL2 = `cat $line | awk '{print $2}'`
    sed "s/(${COL1}[0-9]+)[^||]*||/\1 ${COL2}||/g" file_2 > file_2.out
    mv file_2.out file_2
done < "file_1"