使用sed处理ini文件后控制台等待输入的解决方法咨询
解决sed命令执行后卡住等待输入的问题
问题根源
你的命令把输入文件secrets.ini放在了整个管道的末尾,而第一个sed命令没有指定输入源,它默认会从标准输入(控制台)读取内容,所以出现了卡住等待输入的情况。
修正后的多管道命令
只需把输入文件移到第一个sed命令后面,让它直接读取文件内容即可:
sed -n -e '/\[platform\]/,/\[app\]/p' secrets.ini | sed -e '1d;$d' | sed 's/:/\.das-ci.svc.cluster.local&/2g'
更高效的单sed命令优化
可以用单个sed完成所有操作,减少管道开销,逻辑更清晰:
sed -n '/\[platform\]/,/\[app\]/ { 1d # 删除块内第一行([platform]行) $d # 删除块内最后一行([app]行) s/:/\.das-ci.svc.cluster.local&/2g # 在第二个冒号前插入指定后缀 p # 打印处理后的行 }' secrets.ini
执行这个命令后,会直接输出处理后的[platform]与[app]之间的内容,不会再卡住等待输入。
内容的提问来源于stack exchange,提问作者Venkatesh padala
相关产品推荐
相关产品推荐

