shell - 如何检查一行中某个位置的字符值,然后使用 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
解决方案
这可能对您有用(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
推荐阅读
- html - 尝试使用带有正文解析器的 Node/Express 从前端检索数据但失败
- android-emulator - 在 xamarin Visual Studio 2019 上运行 android 模拟器显示透明屏幕
- b-tree - 为什么要搜索的单个节点的时间复杂度是 O(1) 而不是 O(logn)?
- postgresql - 在 ALTER TABLE ALTER COLUMN 的 USING 子句中使用 SELECT?
- typescript - 打字稿文件的编译问题
- android - 在 Android 10 设备中,生物识别提示一直在锁定屏幕顶部失败并显示 ERROR_CANCELED
- javascript - 在 Javascript 和 PHP 之间匹配 MD5 原始输出
- java - 在android中更改wifi时如何获取连接的wifi ssid
- flutter - 颤振网页视图
- c# - 在 .Net Core 2.2 Web API 项目中处理中间件中的 SignalR 异常