到目前为止,我已经能够找到如何在文件的开头添加一行,但这不是我想要的.我将在一个例子中展示它
文件内容
some text at the beginning
Run Code Online (Sandbox Code Playgroud)
结果
<added text> some text at the beginning
Run Code Online (Sandbox Code Playgroud)
它是类似的,但我不想用它创建任何新的线...
sed如果可能的话,我想这样做.
如何在不使用io重定向的情况下通过单行命令在文件中附加文本?
我是 Barrier-kvm 的频繁用户。我最近将服务器升级到 Ubuntu 20.04 并开始出现错误“错误:ssl 证书不存在:/home/rsvay/snap/barrier-kvm/2/.local/share/barrier/SSL/Barrier.pem”。我无法使用关键字“Barrier-kvm”得到任何答案,我花了几个小时才解决这个问题。所以我想分享我的解决方案。
我需要在sed中使用命令的输出作为搜索模式.我将使用echo做一个例子,但假设这可能是一个更复杂的命令:
echo "some pattern" | xargs sed -i 's/{}/replacement/g' file.txt
Run Code Online (Sandbox Code Playgroud)
该命令不起作用,因为"某些模式"有一个空格,但我认为这清楚地说明了我的问题.
如何使该命令有效?
提前致谢,
我正在尝试编写一个 bash 脚本来更改我的 azure devops 管道的类中的字符串。但无法使其工作。
从https://github.com/Microsoft/appcenter-build-scripts-examples/blob/master/xamarin/app-constants/appcenter-pre-build.sh复制脚本
我的 bash 尝试:
我的班级要改变
namespace Core
{
public class AppConstant
{
public const string ApiUrl = "https://production.com/api";
public const string AnotherOne="AAA";
}
}
Run Code Online (Sandbox Code Playgroud)我的剧本
if [ ! -n "$API_URL" ]
then
echo "You need define the API_URL variable"
exit
fi
APP_CONSTANT_FILE=$(Build.SourcesDirectory)/MyProject/Core/AppConstant.cs
if [ -e "$APP_CONSTANT_FILE" ]
then
echo "Updating ApiUrl to $API_URL in AppConstant.cs"
sed -i '' 's#ApiUrl = "[a-z:./]*"#ApiUrl = "'$API_URL'"#' $APP_CONSTANT_FILE
echo "File content:"
cat …Run Code Online (Sandbox Code Playgroud) 我正在将代理变量注入到Shell脚本中。我必须对字符串进行转义,因为它们之间有空格。
sed -i -e 's#UseConcMarkSweepGC#UseConcMarkSweepGC $PROXY_ARGS#g' ${TEST_HOME}/bin/test.sh
Run Code Online (Sandbox Code Playgroud)
现在,这总是-e在末尾生成另一个文件ith ,因此我以test.shand 结尾test.sh-e。两者是相同的。目前我在做
rm test.sh-e
Run Code Online (Sandbox Code Playgroud)
之后 sed这工作正常。我想知道是否有一种方法根本不生成临时文件?我-e收到错误时无法删除sed: -i may not be used with stdin。