尝试删除字符串前后的空格以及字符串并替换为文件中的单个空格

尝试删除字符串前后的空格以及字符串并替换为文件中的单个空格

我试图从 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

相关内容