我有一个像这样的特定句子 -
|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|
我需要从这个特定的句子中提取以下部分 -
/billing/gcdr/ftpdir
我能用sed做到这一点吗?如果是的话,请帮助我。
答案 0 :(得分:3)
以及sed
和awk
您也可以使用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