linux - 尝试用一系列值替换一组文件中的特定列

标签 linux perl shell

我需要用一系列值替换特定的字段条目。

假设下面是我拥有的一组文件

file1.txt
file2.txt
file3.txt

并且 file1.txt 包含如下条目>>

LOI 0403 001900 0000 0100 001 001 000030 000000 00000000 000 PF155000087 0000 PROMO55      
LOI 0403 001900 0000 0100 001 002 000030 000000 00000000 000 0NF18300061 0000 ON           
LOI 0403 002800 0000 0100 002 001 000030 000000 00000000 000 CVCID002100 0000 P41884       
LOI 0403 002800 0000 0100 002 002 000030 000000 00000000 000 CVCID002101 0000 PROMO55      
LOI 0403 004700 0000 0100 003 001 000100 000000 00000000 000 CVCID002102 0000 VERCAR60     
LOI 0403 011900 0100 0100 001 001 000100 000000 00000000 000 CVCID002103 0000 VERCAR60     
LOI 0403 012800 0100 0100 002 001 000030 000000 00000000 000 CVCID002104 0000 VOD88    

我需要替换第 12 个字段中的条目,其中包含 PF155000087、0NF18300061、CVCID002100 等。

类似的条目也将在 file2.txt 和 file3.txt 中提供。

上述条目必须分别替换为一系列条目,例如 ABCDE000001、ABCDE000002、ABCDE000003、ABCDE000004 等。

成功替换 file1.txt 后,该序列应继续替换 file2.txt。例如,如果 file1.txt 的结束值为 ABCDE000030,则 file2.txt 的替换起始位置应从 ABCDE000031 开始,依此类推...

任何人都可以帮助我解决上述情况吗?

提前致谢!

最佳答案

perl -i -lane '$F[11] = sprintf("ABCDE%06d", ++$i); print "@F"' file1.txt file2.txt ..

关于linux - 尝试用一系列值替换一组文件中的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863912/

相关文章:

linux - 将 rlogin 命令转换为别名

linux - 遍历带有空格的文件列表

perl - Perl 中将迭代器扩展为列表的最优雅的方式是什么?

perl - 如何在独立的 Perl 脚本中使用 Mojolicious 渲染?

perl - 在数值中插入逗号(INR 值) - Perl

linux - 如何在 shell 中迭代文本文档的单词。我想显示文本文档中的字数

html - 搜索替换字符串模式将 px 添加到数值

linux - rsync --exclude 和 --exclude-from 不起作用

c - Bash 没有这样的文件或目录错误(缓存模拟器)

shell - Lua:寻找开源图形解释器/控制台/交互式shell