23

ユースケースは、私の場合、最小化される前のCSSファイルの連結です。2つのCSSファイルを連結するには:

cat 1.css 2.css > out.css

1つの位置にテキストを追加するには、次のようにします。

cat 1.css <<SOMESTUFF 2.css > out.css
This will end in the middle.
SOMESTUFF

他の1つのプログラムからSTDOUTを追加するには:

sed 's/foo/bar/g' 3.css | cat 1.css - 2.css > out.css

ここまでは順調ですね。しかし、私は定期的に、著作権ヘッダー、前処理されたファイルなど、いくつかの文字列、ファイル、さらにはプログラム出力を一緒に混合する必要がある状況に遭遇sed(1)します。順序を自由に選択しながら、できるだけ少ない手順と一時ファイルでそれらを連結したいと思います。

要するに、私はBashで可能な限り少ないステップでこれを行う方法を探しています:

command [string|file|output]+ > concatenated
# note the plus ;-) --------^

(基本的に、cat複数のSTDINを処理することで十分だと思います。

<(echo "FOO") <(sed ...) <(echo "BAR") cat 1.css -echo1- -sed- 2.css -echo2-

しかし、どうすればそれらにアクセスできるのかわかりません。)

4

3 に答える 3

30

これは機能します:

cat 1.css <(echo "FOO") <(sed ...) 2.css <(echo "BAR")
于 2012-06-08T11:29:27.947 に答える
18

できるよ:

echo "$(command 1)" "$(command 2)" ... "$(command n)" > outputFile
于 2012-06-08T11:16:04.130 に答える
17

ファイルにリダイレクトされるサブシェルにすべてのコマンドを追加できます。

(
    cat 1.css
    echo "FOO"
    sed ...
    echo BAR
    cat 2.css
) > output

を使用してファイルに追加することもできます>>。例えば:

cat 1.css  >  output
echo "FOO" >> output
sed ...    >> output
echo "BAR" >> output 
cat 2.css  >> output

(これにより、ファイルが繰り返し開いたり閉じたりする可能性があります)

于 2012-06-08T11:19:37.810 に答える