我试图从 file1.txt 中删除字符串作为 bash 脚本的一部分。
例如,该文件包含:
@some_group1 = take.me bake.shake test.test push.pull
@some_group2 = test.test take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull test.test
我想要的输出是:
@some_group1 = take.me bake.shake push.pull
@some_group2 = take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull
我尝试使用 sed 命令,但没有成功让它工作。
sed -i 's/\[?]\$username\[?]\/ /g' file1.txt
完成这项任务的最佳方法是什么?
答案1
sed
解决方案:
username="test.test"
sed "s/ *$username */ /" file
输出:
@some_group1 = take.me bake.shake push.pull
@some_group2 = take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull
答案2
要使用单引号并插入变量名称,请执行以下操作:
sed 's/ '"$username"'//' file1.txt
它不是很漂亮,但有时可能会有用。无论直接使用单引号还是双引号,代码都存在一个潜在的问题。如果变量包含“/”,sed 会将其视为“s”命令的一部分,这意味着将有 4 个斜杠,您将收到如下语法错误:
sed: bla bla bla: unknown option to `s' #good luck debugging that :)
为了解决这个问题,我通常选择另一个语法分隔符,我知道它最不可能出现在我的变量中。例如,新命令将变为:
sed 's# '"$username"'##' file1.txt