私はこのような特定の文を持っています -
|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|
この特定の文から次の部分を抽出する必要がありました -
/billing/gcdr/ftpdir
sed でできる可能性はありますか? はいの場合、私を助けてください。
と一緒にsed
使用awk
することもできますcut
。使用cut
:
echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | cut -d'|' -f2
これは解決策ではありませんが、 awksed
を使用できる場合:
echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|"| awk -F"|" '{print $2}'
が得られます:
/billing/gcdr/ftpdir
awk コマンドの説明:
awk -F"|" '{print $2}'
-F="|"
「フィールドセパレーター」を指定します。これは、入力行を'|'
(デフォルトでは空白を使用するのではなく) 文字を使用して異なるフィールドに分離/グループ化し、その行の 2 番目のフィールドを出力します。
sed
簡単にそれを行うことができます:
sed 's/^|//;s/|.*//;'
最初のsed
コマンド ( s/^|//
) は最初の|
シンボルを削除し、2 番目のコマンド ( ) は次以降のすべてのシンボルs/|.*//
を削除します。|
テストするには、コンソールで実行します。
echo "|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|" | sed 's/^|//;s/|.*//;'
これはあなたのために働くかもしれません:
echo '|/billing/gcdr/ftpdir|fw43/collectors/ANHMCA04ANT|' |
sed 's/^|\([^|]*\).*/\1/'
/billing/gcdr/ftpdir