在 Unix 中从给定的字符串中提取中间子串
Extract Middle Substring from a given String in Unix
我有一个不同范围的字符串:
WATSON_AJAY_AB04_DOTHING.data
WATSON_NAVNEET_CK4_DOTHING.data
WATSON_PRASHANTH_KJ56_DOTHING.data
WATSON_ABHINAV_KD323_DOTHING.data
关于上面的这些字符串,我该如何提取
AB04,CK4,KJ56,KD323
在 Unix 中?
echo "$string" | cut -d'_' -f3
您可以使用 sed 或 grep 来完成这项任务。但是由于字符串是如此简单,我认为您不需要。
一种方法是使用bash 'cut' 命令。下面是直接在 BASH shell/command 行的例子:
jimm@pi$ string='WATSON_AJAY_AB04_DOTHING.data'
jimm@pi$ cut -d '_' -f 3 <<< "$string"
AB04 <-- outputs the result directly
(编辑:当然,Lucas 上面的回答也是一个快速的 'one-liner',它做的事情与上面相同 - 他先于我):)
剪切将以_字符作为分隔符(-d '_'
部分),然后显示字符串的第3个切片(-f 3
部分)。
或者,如果您想从内容列表中输出第 3 个切片(使用上面的列表),您可以编写一个简单的 BASH 脚本。
首先,将上面的行 ('WATSON...etc') 保存为类似 text.txt
的内容。然后打开你最喜欢的文本编辑器并输入:
#!/bin/sh
cut -d '_' -f 3 <
将该脚本保存为一些有用的名称,如 slice.sh
,并确保它可执行 chmod 775 slice.sh
。
然后在命令行中,您可以针对您的文本文件执行脚本,并立即获得您想要的文件部分的输出(在本例中为第三组文本,以 _ 字符分隔):
$ ./slice.sh text.txt
AB04
CK4
KJ56
KD323
希望对您有所帮助!请记住,上面的命令可能会有所不同,具体取决于您使用的 *nix 的风格,但它至少应该为您指明正确的方向。
我有一个不同范围的字符串:
WATSON_AJAY_AB04_DOTHING.data
WATSON_NAVNEET_CK4_DOTHING.data
WATSON_PRASHANTH_KJ56_DOTHING.data
WATSON_ABHINAV_KD323_DOTHING.data
关于上面的这些字符串,我该如何提取
AB04,CK4,KJ56,KD323
在 Unix 中?
echo "$string" | cut -d'_' -f3
您可以使用 sed 或 grep 来完成这项任务。但是由于字符串是如此简单,我认为您不需要。
一种方法是使用bash 'cut' 命令。下面是直接在 BASH shell/command 行的例子:
jimm@pi$ string='WATSON_AJAY_AB04_DOTHING.data'
jimm@pi$ cut -d '_' -f 3 <<< "$string"
AB04 <-- outputs the result directly
(编辑:当然,Lucas 上面的回答也是一个快速的 'one-liner',它做的事情与上面相同 - 他先于我):)
剪切将以_字符作为分隔符(-d '_'
部分),然后显示字符串的第3个切片(-f 3
部分)。
或者,如果您想从内容列表中输出第 3 个切片(使用上面的列表),您可以编写一个简单的 BASH 脚本。
首先,将上面的行 ('WATSON...etc') 保存为类似 text.txt
的内容。然后打开你最喜欢的文本编辑器并输入:
#!/bin/sh
cut -d '_' -f 3 <
将该脚本保存为一些有用的名称,如 slice.sh
,并确保它可执行 chmod 775 slice.sh
。
然后在命令行中,您可以针对您的文本文件执行脚本,并立即获得您想要的文件部分的输出(在本例中为第三组文本,以 _ 字符分隔):
$ ./slice.sh text.txt
AB04
CK4
KJ56
KD323
希望对您有所帮助!请记住,上面的命令可能会有所不同,具体取决于您使用的 *nix 的风格,但它至少应该为您指明正确的方向。