2017-03-09 45 views
0

您好,我試圖提取小數點後的部分行。 我輸入行 A-B-2.0.2-CUNIX編程linux

我想用sed來獲取輸出 2.0.2-C

有人能幫助我嗎?

+0

嗨,請分享你到目前爲止嘗試過的什麼 – mrun

回答

0

並不完美,但工作:

echo "A-b-2.0.2-c" | sed -r -n -e 's/^[^0-9]+([0-9.]+.*)$/\1/p' 

的問題是,sed命令不支持非貪婪的匹配這就是爲什麼你必須使用一個排除模式的字符串的開頭部分。要獲得更精確的匹配模式,您必須使用其他工具。

0

這是一個練習sed的定義。和您提供的以下會工作的信息:

$ sed 's/A-b-//' input.txt 

還有一個bash的方式來做到這一點:

#!/usr/bin/bash 

input="A-b-2.0.2-c" 
echo ${input/A-b-/} 

也將提取小數點後的行。

+0

感謝您的回答。但是我有一個樣本.....我的小數可能會在任何時候發生。這實際上是我的文件夾名稱....從這個文件夾名稱我需要提取文件夾名稱的子字符串從十進制到行尾。你能幫我嗎? –

+0

您應該將該信息添加到您的問題。這樣,未來的讀者在思考解決方案時就會記住這一點! – Matthias