假设我有一个这样的文件:
14-Hello14657
156:Good morning 487
1478456=Good bye 1 2
我想在第一行数后提取第一个字符(并将其存储在一个变量中,一次一个)。在这个例子中,它将提取
-
:
=
我想我应该使用正则表达式,但我仍在学习它,我找不到办法做到这一点。
答案 0 :(得分:3)
sed 方法:
s="156:Good morning 487"
var1=$(sed 's/^[0-9]*\([^0-9]\).*/\1/' <<< $s)
echo $var1
:
另一种方法是 bash 变量扩展+ 剪切 命令:
s="1478456=Good bye 1 2"
echo ${s//[[:digit:]]/} | cut -c1
=
答案 1 :(得分:1)
使用GNU grep(大多数Linux系统上安装的那个),您可以使用
grep -Po '^[0-9]+\K.' yourFile
要将输出存储在变量中,请使用
myVar="$(grep -Po '^[0-9]+\K.' yourFile)"
使用您的示例,变量myVar
将包含所有三个符号:
-
:
=