如何从多行字符串中剪切模式并存储到新变量?

时间:2017-05-02 09:13:35

标签: bash unix awk sed cut

我有一个字符串变量

$var="-- this is a  --
      -- comment --
      hellow
      world"

我需要将字符串字符串分成两部分,以便有两个新的字符串变量

$var1="-- this is a  --
      -- comment --"

$var2="hellow
       world" 

我需要新行,因为它在$ var1 $ var2

我尝试了什么

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

我无法将模式存储在它正在删除的$ var1中。

注意:连字符很重要,新行很重要。 尝试过bash字符串操作,但它没有工作

2 个答案:

答案 0 :(得分:0)

只需使用grep

即可

var1

 grep  '\-\-.*\-\-'

var2

 grep -v '\-\-.*\-\-'

如@ 123所示,如果我们在grep命令中使用--,我们不需要转义。

所以你也可以使用它

var1

 grep  -- '--.*--'

var2

 grep -v '--.*--'

答案 1 :(得分:0)

您问题中显示的$var似乎包含新行,使您的$var实际上包含4条不同的行。在这种情况下,您可以分割如下行:

$ var1=$(sed -n '1,2p' <<<"$var")
$ var2=$(sed -n '3,4p' <<<"$var")

$ var1获取$ var的第1行和第2行(如果你愿意,可以从文件中获取)
$ var2获取$ var的第3行和第4行(如果你愿意,可以从文件中获取)