Shell - 我怎么能在一个句子中写一个特定的单词?

时间:2018-01-18 02:11:17

标签: shell grep words

我想要查看句子的某些部分,例如:/hana/new/register。在这里我需要grep /个字符之间的第一个元素,所以在这里我想得到hana

我怎么能在shell中做到这一点?

2 个答案:

答案 0 :(得分:1)

要获得斜线分隔线上的第一个单词,我们可以使用cut

$ echo '/samarth/new/register then i want to grep samarth' | cut -d/ -f 2
samarth
$ echo '/hana/new/register' | cut -d/ -f 2
hana

或者,我们可以使用awk

$ echo '/samarth/new/register then i want to grep samarth' | awk -F/ '{print $2}'
samarth
$ echo '/hana/new/register' | awk -F/ '{print $2}'
hana

答案 1 :(得分:1)

您可以使用sed并使用字符类返回引用捕获第一个/.../之间的内容。例如:

echo '/samarth/new/register' | sed 's/^\/\([^/]*\).*$/\1/'
samarth

sed命令是基本替换命令,其中sed 's/find/replace/'形式在/之后找到所有内容(转义为\/ })并以^锚定到开头。您使用捕获组\(...\)来捕获字符类[^/]*(一切都不是/),并在替换的替换一侧使用反向引用\1将您首次捕获的内容放入替换