首页 > 解决方案 > 在linux中替换文件的每一行中的字符

问题描述

我有一个文件,每行都有不同的单词。我的目标是将第一个字符替换为大写字母,并将第三个字符替换为“#”。

例如:football 将被交换为 -> Foo#ball

我尝试考虑使用 awk 和 sed。这对我没有帮助,因为(据我所知)sed 需要精确的字符输入,而 awk 可以打印所需的字符但不能更改它。

标签: linuxbashawksed

解决方案


使用 GNU sed 和两个s命令:

echo 'football' | sed -E 's/(.)/\U\1/; s/(...)./\1#/'

输出:

足球#球

请参阅:3.3 s 命令5.7 反向引用和子表达式以及5.9.2 大写/小写转换


推荐阅读