2

我有这样一个特殊的句子-

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

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

/billing/gcdr/ftpdir

我可以用 sed 做到这一点吗?如果是,请帮助我。

4

4 回答 4

3

以及你也可以sed使用. 使用:awkcutcut

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

于 2012-07-05T11:11:13.183 回答
2

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

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

将产生:

/billing/gcdr/ftpdir

awk 命令说明:

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

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

于 2012-07-05T11:07:48.607 回答
1

sed可以很容易地做到这一点:

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

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

要测试它在控制台中运行:

echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | sed 's/^|//;s/|.*//;'
于 2012-07-05T11:09:51.960 回答
0

这可能对您有用:

echo '|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|' | 
sed 's/^|\([^|]*\).*/\1/'
/billing/gcdr/ftpdir
于 2012-07-05T11:31:03.937 回答