如何在文件中将行的部分转换为大写

时间:2019-05-29 17:04:28

标签: bash shell perl sh

我有一个文件file.txt,下面有几行。我希望将队列名转换为大写,如下所示:queuename=SP00245B

    # Queue name
    #
    queuename=sp00245b

4 个答案:

答案 0 :(得分:1)

awk '$1 == "queuename" {$2 = toupper($2)}1' FS== OFS== input-file

请注意,如果该行中有2个=,则此操作将失败,并且仅前两个=之间的值将被大写。如果这是一个问题,那很容易解决(留给读者练习)。

答案 1 :(得分:1)

一个简单的Perl解决方案:

perl -i -pe 's/^\s*queuename=\K(.*)/\U$1/' file.txt

(如果您不想就地修改文件,请删除-i。)

答案 2 :(得分:0)

使用GNU sed:

sed -i 's/\(^[[:blank:]]*queuename=\)\(.*\)/\1\U\2/' file.txt

这使用两个捕获组和\U序列来切换第二组的大写替换。

答案 3 :(得分:0)

您还可以使用sed转换\U将带有替换命令的匹配模式部分转换为大写。要隐藏'='符号后的所有内容,您可以使用例如

sed '/^queuename=/s/=.*$/\U&/' filename

要就地编辑文件,请包含-i选项,例如

sed -i '/^queuename=/s/=.*$/\U&/' filename

使用/输出示例

$ echo "queuename=sp00245b" | sed '/^queuename=/s/=.*$/\U&/'
queuename=SP00245B