vi sed 或 awk。文本文件中的每一行。替换从位置 75 开始的 9 个字符
vi sed or awk. every line in a text file. replace 9 characters starting at position 75
我有一个大文件
从第 3 行到末尾(#lines in file -1 )
从行中的字符位置 75 开始。我需要将字符串更改为 123456789。
思想建议?我不能让每行的现有字符不重复,所以我无法搜索它。
隐藏 pii 数据的乐趣
让我们考虑这个测试文件:
$ cat testfile
.........-.........-.........-.........-.........-.........-.........-....ReplaceMeKeep
.........-.........-.........-.........-.........-.........-.........-....OldData..Keep
使用 sed
这会将第 75 列开始的九个字符替换为 123456789
:
$ sed -E 's/(.{74}).{0,9}/23456789/' testfile
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
使用 awk
这会将新字符串替换为从位置 75 开始的前九个字符:
$ awk '{print substr([=12=],1,74) "123456789" substr([=12=],75+9)}' testfile
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
在vim中,您可以这样做:
%s/\(^.\{75\}\)\@<=........./1234567890/g
这基本上会进行 75 个字符的后视(从行首开始),并用您的字符串替换该行的其余部分。
我有一个大文件 从第 3 行到末尾(#lines in file -1 ) 从行中的字符位置 75 开始。我需要将字符串更改为 123456789。
思想建议?我不能让每行的现有字符不重复,所以我无法搜索它。
隐藏 pii 数据的乐趣
让我们考虑这个测试文件:
$ cat testfile
.........-.........-.........-.........-.........-.........-.........-....ReplaceMeKeep
.........-.........-.........-.........-.........-.........-.........-....OldData..Keep
使用 sed
这会将第 75 列开始的九个字符替换为 123456789
:
$ sed -E 's/(.{74}).{0,9}/23456789/' testfile
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
使用 awk
这会将新字符串替换为从位置 75 开始的前九个字符:
$ awk '{print substr([=12=],1,74) "123456789" substr([=12=],75+9)}' testfile
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
.........-.........-.........-.........-.........-.........-.........-....123456789Keep
在vim中,您可以这样做:
%s/\(^.\{75\}\)\@<=........./1234567890/g
这基本上会进行 75 个字符的后视(从行首开始),并用您的字符串替换该行的其余部分。