2012-07-05 92 views

回答

2

這不是一個sed解決方案,但如果你能awk生活:

echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|"| awk -F"|" '{print $2}' 

將產生:

/billing/gcdr/ftpdir 

awk命令的說明:

awk -F"|" '{print $2}' 

-F="|"指定「字段分隔符」 - 它使用'|'字符(而不是默認使用空白)將輸入行分隔/分組到不同的字段中,然後打印該行的第二個字段。

+0

它的工作,謝謝:) – vvshack 2012-07-05 14:30:11

1

sed可以很容易地做到這一點:

sed 's/^|//;s/|.*//;' 

第一sed命令(s/^|//)將去除第一|符號,之後,第二個(s/|.*//)將刪除下一個|和所有符號。

爲了測試它在控制檯中運行:

echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | sed 's/^|//;s/|.*//;' 
3

sedawk沿着你也可以使用cut。使用cut

echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | cut -d'|' -f2

+0

簡單,很好的解決方案:) – vvshack 2012-07-05 14:29:41

0

這可能會爲你工作:

echo '|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|' | 
sed 's/^|\([^|]*\).*/\1/' 
/billing/gcdr/ftpdir 
相關問題