我有這樣一個特定的句子 -如何提取使用字符或單詞SED之間的一組字符串
|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|
我需要提取此句話以下部分 -
/billing/gcdr/ftpdir
有沒有可能我可以用sed來做?如果是,請幫助我。
我有這樣一個特定的句子 -如何提取使用字符或單詞SED之間的一組字符串
|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|
我需要提取此句話以下部分 -
/billing/gcdr/ftpdir
有沒有可能我可以用sed來做?如果是,請幫助我。
這不是一個sed
解決方案,但如果你能awk生活:
echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|"| awk -F"|" '{print $2}'
將產生:
/billing/gcdr/ftpdir
awk命令的說明:
awk -F"|" '{print $2}'
-F="|"
指定「字段分隔符」 - 它使用'|'
字符(而不是默認使用空白)將輸入行分隔/分組到不同的字段中,然後打印該行的第二個字段。
sed
可以很容易地做到這一點:
sed 's/^|//;s/|.*//;'
第一sed
命令(s/^|//
)將去除第一|
符號,之後,第二個(s/|.*//
)將刪除下一個|
和所有符號。
爲了測試它在控制檯中運行:
echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | sed 's/^|//;s/|.*//;'
與sed
和awk
沿着你也可以使用cut
。使用cut
:
echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | cut -d'|' -f2
簡單,很好的解決方案:) – vvshack 2012-07-05 14:29:41
這可能會爲你工作:
echo '|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|' |
sed 's/^|\([^|]*\).*/\1/'
/billing/gcdr/ftpdir
它的工作,謝謝:) – vvshack 2012-07-05 14:30:11