如何使用sed在字符或单词之间提取一组字符串

时间:2012-07-05 11:02:11

标签: unix sed

我有一个像这样的特定句子 -

|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|

我需要从这个特定的句子中提取以下部分 -

/billing/gcdr/ftpdir

我能用sed做到这一点吗?如果是的话,请帮助我。

4 个答案:

答案 0 :(得分:3)

以及sedawk您也可以使用cut。使用cut

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

答案 1 :(得分:2)

这不是sed解决方案,但如果您可以使用awk

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

将产生:

/billing/gcdr/ftpdir

awk命令的说明:

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

-F="|"指定“字段分隔符” - 它使用'|'字符(而不是默认使用空格)将输入行分隔/分组到不同的字段中,然后打印该行的第二个字段

答案 2 :(得分:1)

sed可以很容易地做到:

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

第一个sed命令(s/^|//)将删除第一个|符号,第二个s/|.*//)将删除下一个|和所有符号之后。

测试它在控制台中运行:

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

答案 3 :(得分:0)

这可能对您有用:

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