如何使用Sed修改含'name'的行中字符并应用到文件?
Sed实现字符循环替换并修改含'name'的行
没问题,这就给你一个精准的Sed方案,刚好能满足你的需求——只对包含name的行执行a→b、b→c……z→a的循环字符替换,并且直接修改原文件:
sed -i '/name/y/abcdefghijklmnopqrstuvwxyz/bcdefghijklmnopqrstuvwxyza/' your_file.txt
命令拆解解释:
-i:直接编辑原文件的参数(如果是macOS等使用BSD Sed的环境,需要写成-i '',避免自动生成备份文件)/name/:地址匹配规则,告诉Sed只对包含name字符串的行执行后续操作y/源字符集/目标字符集/:Sed的转换命令(y命令),它会把源字符集中的每个字符,按位置对应替换成目标字符集里的字符。这里我们把a-z映射成b-a,刚好实现了每个字母循环后移一位的效果
效果验证:
拿你给出的示例内容来说:
- 原行中的
fjkdf会转换为gkleg(f→g、j→k、k→l、d→e、f→g) name会转换为obnf(n→o、a→b、m→n、e→f)- 其他如
ew变为fx、wew变为xfx,完全匹配你给出的预期结果
如果是BSD Sed环境(比如macOS自带的Sed),执行命令调整为:
sed -i '' '/name/y/abcdefghijklmnopqrstuvwxyz/bcdefghijklmnopqrstuvwxyza/' your_file.txt
内容的提问来源于stack exchange,提问作者bvl
相关产品推荐
相关产品推荐

