パスからフィールドを削除する最も簡単でわかりやすい方法を探しています。例えば、/ this/is/my/complicated/path/hereを持っていて、5番目のフィールド( "/ complex")をbashコマンドを使って文字列から削除して、/ this/is/my/path。 、これが動作しないことを除いてパスから1つのディレクトリコンポーネントを削除する(文字列操作)
echo "/this/is/my/complicated/path" | tee >(cut -d/ -f-4) >(cut -d/ -f6-)
をご希望のものを私は
echo "/this/is/my/complicated/path/here" | cut -d/ -f-4
echo "/"
echo "/this/is/my/complicated/path/here" | cut -d/ -f6-
でこれを行うことができますが、私はこれがちょうど1つの簡単なコマンドで行いたいと思います。
ありがとうございます。これは私の問題を解決します。しかし、私は興味があります:1つのコマンドの結果を2つのコマンドに入力することは可能ですか? – bob
あなたはこれを次のように並べ替えることができます: 'echo hello | tee>(sedの/ l/L/g ')| sed 's/h/H/g''でも、最初の 'sed'の出力は2番目のsedを通過することに注意してください。 (sed 's/l/L/g')>(sed 's/h/H/g') 'になります。 – ams
Hmmm、あなたは、このようなものの出力を渡すのを避けることができます。 'echo hello | tee>(sedの/ l/L/g '>/dev/tty)| sed 's/h/H/g' 'としていますが、ターミナルセッションでしか動作しません。そうでなければ、独自の名前付きパイプが必要です。 – ams