2

私はこのような特定の文を持っています -

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

この特定の文から次の部分を抽出する必要がありました -

/billing/gcdr/ftpdir

sed でできる可能性はありますか? はいの場合、私を助けてください。

4

4 に答える 4

3

と一緒にsed使用awkすることもできますcut。使用cut:

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

于 2012-07-05T11:11:13.183 に答える
2

これは解決策ではありませんが、 awksedを使用できる場合:

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

が得られます:

/billing/gcdr/ftpdir

awk コマンドの説明:

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

-F="|"「フィールドセパレーター」を指定します。これは、入力行を'|'(デフォルトでは空白を使用するのではなく) 文字を使用して異なるフィールドに分離/グループ化し、その行の 2 番目のフィールドを出力します。

于 2012-07-05T11:07:48.607 に答える
1

sed簡単にそれを行うことができます:

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

最初のsedコマンド ( s/^|//) は最初の|シンボルを削除し、2 番目のコマンド ( ) は次以降のすべてのシンボル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 に答える