在第一个数字后面提取第一个字符

时间:2017-05-03 08:08:23

标签: shell

假设我有一个这样的文件:

14-Hello14657
156:Good morning 487
1478456=Good bye 1 2

我想在第一行数后提取第一个字符(并将其存储在一个变量中,一次一个)。在这个例子中,它将提取

-
:
=

我想我应该使用正则表达式,但我仍在学习它,我找不到办法做到这一点。

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将包含所有三个符号:

-
:
=