如何在找到模式之前删除字符? (UNIX)

时间:2017-05-01 13:30:14

标签: bash unix sed

我有一个变量:

$var="-- ---comment- --
      abcd;"

我想删除“ - ”评论“ - ”

之间的每个字符

预期产出:

$var="abcd;"

我正在尝试 test.sh

#!/bin/bash
var="----comment---
     abcd;"
test=$(sed 's/^--.*--/' $var)
echo $test

它不起作用。我收到以下错误:

  找不到

命令

2 个答案:

答案 0 :(得分:0)

在bash中:

$ cat foo.sh
var="----comment---                                                                                                          
     abcd;"
echo "$var"            # this outputs the original var
echo "${var/--*  /}"   # this output replacing everything between -- and "  "
$ bash foo.sh
----comment---
     abcd;
abcd;

您可以通过

将输出设置为变量
$ var="${var/--*  /}"

答案 1 :(得分:0)

尝试在没有任何内容的情况下替换输出中没有预料到的模式,比如

test=$(echo $var | sed 's/^--.*--//g')

应该工作。