String 使用sed的字符串替换 在读取p时 做 p|u upper=`echo$p|tr'[:lower:'''[:upper:''' 回声$p_上限:$p sed“s/$p_uper/$p/g”billpay-package.txt done

String 使用sed的字符串替换 在读取p时 做 p|u upper=`echo$p|tr'[:lower:'''[:upper:''' 回声$p_上限:$p sed“s/$p_uper/$p/g”billpay-package.txt done,string,bash,sed,String,Bash,Sed,我正在逐行读取文件methods.txt中的字符串(这些字符串是驼峰格式)并将其分配给变量p,然后将这些字符串转换为大写并存储在p_upper中,如上图所示,我要做的是,将文件:billpay-package.xml中的大写实例替换为驼峰大小写实例,但似乎sed命令未正确执行您正在执行sed,但未保存输出。使用sed-i 在bash中,您可以使用下面所示的较短格式将变量转换为大写: while read p do p_upper=`echo $p | tr '[:lower

我正在逐行读取文件methods.txt中的字符串(这些字符串是驼峰格式)并将其分配给变量p,然后将这些字符串转换为大写并存储在p_upper中,如上图所示,我要做的是,将文件:billpay-package.xml中的大写实例替换为驼峰大小写实例,但似乎sed命令未正确执行

您正在执行sed,但未保存输出。使用
sed-i

在bash中,您可以使用下面所示的较短格式将变量转换为大写:

while read p
    do
       p_upper=`echo $p | tr '[:lower:]' '[:upper:]'`  
       echo $p_upper:$p
       sed "s/$p_uper/$p/g" billpay-package.txt
    done < methods.txt 
在读取p时
做
p_upper=${p^^}
sed-i“s/$p_upper/$p/g”billpay-package.txt
done
您可能需要:
sed-i.bak“s/$p\u uper/$p/g”billpay package.txt
来内联编辑输入文件。
$p\u uper
$p\u upper
不同。但这可能只是问题中的一个输入错误。如果你不使用Mac,你可以按照上面的建议进行就地修改
sed-i
(如果这是问题的话)。在Mac上,您必须将输出定向到文件。脚本似乎工作正常,除了匹配的
p_uper
(应该是
p_upper
)。这不是我犯的错误,shell脚本运行到完成,但在cyg win控制台窗口或源文件上没有任何所需的输出,添加-i标志起到了作用。
while read p
do
    p_upper=${p^^}
    sed -i "s/$p_upper/$p/g" billpay-package.txt
done < methods.txt