Jia*_*Liu 6 shell-script regular-expression
我会在 shell 脚本中 grep 某些 shell 命令输出的某些部分:
$ uname -r
>> 3.14.37-1-lts
Run Code Online (Sandbox Code Playgroud)
我只需要3.14.37.
而且对于VERSION具有值“-jwl35”的shell脚本变量,我只想取值“jwl35”。
如何在 shell 脚本中使用正则表达式?
提前致谢!
ter*_*don 18
很多很多方法。以下是一些:
GNU Grep
$ echo 3.14.37-1-lts | grep -oP '^[^-]*'
3.14.37
Run Code Online (Sandbox Code Playgroud)sed
$ echo 3.14.37-1-lts | sed 's/^\([^-]*\).*/\1/'
3.14.37
Run Code Online (Sandbox Code Playgroud)珀尔
$ echo 3.14.37-1-lts | perl -lne '/^(.*?)-/ && print $1
3.14.37
Run Code Online (Sandbox Code Playgroud)
或者
$ echo 3.14.37-1-lts | perl -lpe 's/^(.*?)-.*/$1/'
3.14.37
Run Code Online (Sandbox Code Playgroud)
或者
$ echo 3.14.37-1-lts | perl -F- -lane 'print $F[0]'
3.14.37
Run Code Online (Sandbox Code Playgroud)awk
$ echo 3.14.37-1-lts | awk -F- '{print $1}'
3.14.37
Run Code Online (Sandbox Code Playgroud)cut
$ echo 3.14.37-1-lts | cut -d- -f1
3.14.37
Run Code Online (Sandbox Code Playgroud)壳,甚至!
$ echo 3.14.37-1-lts | while IFS=- read a b; do echo "$a"; done
3.14.37
Run Code Online (Sandbox Code Playgroud)