假設我有這樣一段文字:如何在字符串和字符之前提取文本?
GINC/weary/crazy/RMSD=2316
我希望有一種方法來提取第二之間是什麼樣的斜線/
和/RMSD=2316
。換句話說,我想查找字符串/RMSD=2316
並提取它和它之前的斜槓之間的任何謊言。
假設我有這樣一段文字:如何在字符串和字符之前提取文本?
GINC/weary/crazy/RMSD=2316
我希望有一種方法來提取第二之間是什麼樣的斜線/
和/RMSD=2316
。換句話說,我想查找字符串/RMSD=2316
並提取它和它之前的斜槓之間的任何謊言。
什麼
cut -d/ -f3
-d/
是斜槓分隔符
-f3
意味着第三列
使用SED,沒有任何位置的假設:
echo 'GINC/weary/crazy/RMSD=2316' | \
sed -n 's!.*/\([^/]*\)/RMSD=2316.*!\1!p'
隨着awk
:
awk -F/ '{for(i=1;i<=NF;i++) if($i=="RMSD=2316") print $(i-1)}' t
既然你已經標誌着這個bash
var='GINC/weary/crazy/RMSD=2316'
var1=${var%/RMSD=2316}
echo $var1
echo ${var1##*/}
您可以使用sed
:
sed 's/.*\/\([^\/]\+\)\/RMSD=2316/\1/'
這導致了一個斜槓的所有文本匹配,俘獲所有非正向以/RMSD=2316
爲前綴的斜線字符,並用捕獲的字符替換整個匹配。
Perl的解決方案:
str=GINC/weary/crazy/RMSD=2316
echo "$str" | perl -ne 'print "$1\n" if m|.*?/.*?/(.*)/RMSD=2316|'