如何从多行字符串中剪切模式并存储到新变量中?
how to cut the pattern from a multiple line string and store to the new variable?
我有一个字符串变量
$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 字符串操作,但它不起作用
只需使用grep
对于var1
grep '\-\-.*\-\-'
对于var2
grep -v '\-\-.*\-\-'
正如@123 所建议的,如果我们在 grep 命令中使用 --
,则不需要转义。
所以你也可以用这个
对于var1
grep -- '--.*--'
对于var2
grep -v '--.*--'
您在问题中提出的 $var
似乎包含换行,使您的 $var
实际上由 4 行不同的行组成。在这种情况下,您可以像这样拆分行:
$ var1=$(sed -n '1,2p' <<<"$var")
$ var2=$(sed -n '3,4p' <<<"$var")
$var1 获取 $var 的第 1 行和第 2 行(如果您愿意,也可以从文件中获取)
$var2 获取 $var 的第 3 行和第 4 行(如果您愿意,也可以从文件中获取)
我有一个字符串变量
$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 字符串操作,但它不起作用
只需使用grep
对于var1
grep '\-\-.*\-\-'
对于var2
grep -v '\-\-.*\-\-'
正如@123 所建议的,如果我们在 grep 命令中使用 --
,则不需要转义。
所以你也可以用这个
对于var1
grep -- '--.*--'
对于var2
grep -v '--.*--'
您在问题中提出的 $var
似乎包含换行,使您的 $var
实际上由 4 行不同的行组成。在这种情况下,您可以像这样拆分行:
$ var1=$(sed -n '1,2p' <<<"$var")
$ var2=$(sed -n '3,4p' <<<"$var")
$var1 获取 $var 的第 1 行和第 2 行(如果您愿意,也可以从文件中获取)
$var2 获取 $var 的第 3 行和第 4 行(如果您愿意,也可以从文件中获取)