在 Shell 脚本中将文件中的字母更改为大写

Change a letter in a file to uppercase in Shell script

我正在尝试将文件中的特定给定字母更改为大写,但我不知道该怎么做。该文件已经存在,我想执行以下操作

cat merry.txt 
I wish you a Merry Christmas

将 e 更改为 E,因此输出将为

cat merry.txt
I wish you a MErry Christmas

谢谢大家

像这样:

sed 's/e/\Ue/' Input_File

要永久编辑,请添加 -i 开关:

sed -i ... 

试试这个:

sed 's/e/E/' merry.txt

如果您的文本在一行中多次出现“e”,则前面的 sed 会 仅将每行中的第一个匹配项更改为“E”。通过附加全局选项 g到s命令的结尾,可以保证一行中多次出现的字符串都会被改变。

尝试使用这个:

sed 's/e/E/g' merry.txt

此命令将所有 e 转换为 E

或者可以使用:

sed -i 's/e/E/g' merry.txt

您可以使用 tr 将一个字符“翻译”为另一个字符:

tr 'e' 'E' < file > newfile && mv newfile file

也可以使用awk(这里使用的是动态方式):

find='e'
replace='E'
awk -v f="$find" -v r="$replace" '{gsub(f, r)}1' file > newfile && mv newfile file

使用 GNU sed,您可以使用

sed -i 'y/e/E/' file

在所有这些情况下,您将文件中各处的 e 替换为 E,并将更新文件的内容保存在相同的文件名下。

看到一个sample demo online:

#!/bin/bash
s='I wish them a Merry Christmas'
find='e'
replace='E'
tr "$find" "$replace" <<< "$s"
awk -v f="$find" -v r="$replace" '{gsub(f, r)}1' <<< "$s"
sed 'y/e/E/' <<< "$s"

输出:I wish thEm a MErry Christmas.