我有这样一个特殊的句子-
|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|
我需要从这个特定的句子中提取以下部分 -
/billing/gcdr/ftpdir
我可以用 sed 做到这一点吗?如果是,请帮助我。
以及你也可以sed
使用. 使用:awk
cut
cut
echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | cut -d'|' -f2
这不是一个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/|.*//;'
这可能对您有用:
echo '|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|' |
sed 's/^|\([^|]*\).*/\1/'
/billing/gcdr/ftpdir