我有两个文件
文件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的第一条记录:030055a 将其与文件 2 进行比较,该数字模式匹配的记录如下
03005515077 x 和 03005577733 xx 和 03005583838 yy
只需将 x、xx 和 yy 替换为 a 即可变为
03005515077a和03005577733a和03005583838a
最佳答案
沿着这些思路(未经测试);
#!/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"
关于linux - 在Linux中高效地读取和操作大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901789/