我有不同範圍的字符串:從給定的字符串中提取中東子字符串在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的
?
我有不同範圍的字符串:從給定的字符串中提取中東子字符串在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外殼/命令行:
[email protected]$ string='WATSON_AJAY_AB04_DOTHING.data'
[email protected]$ cut -d '_' -f 3 <<< "$string"
AB04 <-- outputs the result directly
(編輯:當然盧卡斯的上面的回答也是一個快速的‘做上述相同的事情之一班輪’ - 他打我它):)
切割將採取_字符作爲分隔符(在-d '_'
部分),然後顯示字符串(-f 3
部分)的第三片。或者,如果要從內容列表(使用上面的列表)輸出第三個切片,則可以編寫一個簡單的BASH腳本。
首先,將上面的行('WATSON ... etc')保存爲text.txt
之類的東西。然後打開你喜歡的文本編輯器和類型:
#!/bin/sh
cut -d '_' -f 3 < $1
保存該腳本到一些有用的名稱,比如slice.sh
,並確保它是可執行的東西,如chmod 775 slice.sh
。
然後在命令行中,您可以對文本文件執行腳本,並立即獲得所需文件的部分輸出(在本例中爲第三組文本,用_字符分隔):
$ ./slice.sh text.txt
AB04
CK4
KJ56
KD323
希望有所幫助!請記住,以上命令可能會有所不同,具體取決於您所使用的* nix的風格,但至少應指出您的方向是正確的。