如何在shell脚本中提取模式之前的字符串

时间:2014-07-24 06:33:33

标签: bash shell

我有一个包含这样内容的变量

第1行    第2行    第3行    ======
   第4行    第5行    第6行    ======
   .........
   第n行    ======

现在我想在所有出现之前提取线条======'模式,我想将它分配给每个变量 预期产量
    Var1 =第1行第2行第3行     Var2 =第4行第5行第6行     ...........
    Var_n =行n

也可以接受将其存储在阵列中 怎么做?

2 个答案:

答案 0 :(得分:3)

您可以像

一样使用参数扩展
str="mystring:yourstring"  //here assume ":" is pattern
var=${str%:*}
echo $var

有关您的信息,您可以使用#代替%获取格式后的字符串

var=${str#*:}

答案 1 :(得分:3)

#!/bin/bash

# original string
str="some lines1 ====== some lines2 ======"

# parse the string
v1="${str%% =*}"  # beginning at right, remove all to ' ='
tmp="${str% =*}"  # beginning at right, remove first occurrence of ' =*'
v2="${tmp##*= }"  # beginning at left,  remove all to '= '

# print the string and variable
echo "str: $str"
echo " v1: $v1"
echo " v2: $v2"

exit 0

输出:

$ bash somelines.sh
str: some lines1 ====== some lines2 ======
 v1: some lines1
 v2: some lines2