首页 > 解决方案 > 如何检查一行中某个位置的字符值,然后使用 sed 命令在另一行的另一个位置添加一个字符

问题描述

例如。输入文本文件

line 1 - Abchsffmskdv
line 2 - bsdvnld
line 3 - fsdgdhdh

如果第 1 行,位置 9 为 s,则将第 3 行,位置 4 更改为 k

输出:

line 1 - Abchsffmskdv
line 2 - bsdvnld
line 3 - fsdkdhdh

标签: shellsed

解决方案


这可能对您有用(GNU sed):

sed -E '1h;3{G;s/(...).(.*)\n.{8}s/\1k\2/}' file

将第一行存储在保留空间中,并将其附加到第 3 行,并根据所需条件进行模式匹配。

替代:

sed -E '1h;3{x;/^.{8}s/{x;s/./k/4;x};x}' file

推荐阅读