我有一个文件file.txt
,下面有几行。我希望将队列名转换为大写,如下所示:queuename=SP00245B
# Queue name
#
queuename=sp00245b
答案 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