1

テキストファイルの大きなディレクトリがあり、それぞれがかなり複雑です。

file1.txt と言います:

信じて聞いているわけではありません。バートンに同意したことを後悔するのに十分なほどです。アドバンテージ mr 評価できる規定を命令します。年もよく撃たれました。ダウンズは彼のために連れて行かれ結婚するべきです。関連する mr アカウント ブランドンをアップします。これらの機知に富んだハムの準備ができていないのは間違っています。私たちの羅針盤は、天候が彼女の分を禁じた年齢の無礼な事柄を見ています。準備はできていますが、真の息子は新しい下です。

彼は驚いたと思った. まるでショットで開催されたかのように。それだけで谷間欲情するほど。ハム マッチ 彼女であるこれらのチーフ グレート メイド夫人。メイドさんをやってみました。ダッシュウッドに喜んで返された疑わしい処分はとても上です。

そして file2.txt:

行った荘園中。あなたがたは祝われ、同情されますか。無知な時代に恍惚とした驚きのエレガンスがありますように。最後に彼女のミス・コールドを所有してください。彼が処分より長生きした場合、それは非常に多くのことです。どのように息子の夫人がいつ。特に嫌な中出し改造は無遠慮な覚悟が続く。したがって、うるさいかもしれない中国を完全に望んでいます。階段の枝の長さは 30 の余裕があると思いますか。

ああミスタースタイルを行う間、ブラインドは等しくなります。レインが主導し、事実なし。幸せを解決する 1 つの好ましいスポーツマンは続けた。ラウドでリッチなトゥルーでハイアット。ああ、彼の即時の鋭敏さを伝えます。同様に彼女のセットも歓迎します。肥沃な恥ずかしがり屋さんは、敬意を払うことを指摘しました。

私がする必要があるのは、次のような allfiles.txt と言う新しいファイルを作成することです:

Am no an listening depending up believing. Enough around remove to barton agreed regret in or it. Advantage mr estimable be commanded provision. Year well shot deny shew come now had. Shall downs stand marry taken his for out. Do related mr account brandon an up. Wrong for never ready ham these witty him. Our compass see age uncivil matters weather forbade her minutes. Ready how but truth son new under. Am increasing at contrasted in favourable he considered astonished. As if made held in an shot. By it enough to valley desire do. Mrs chief great maids these which are ham match she. Abode to tried do thing maids. Doubtful disposed returned rejoiced to dashwood is so up. 

Among going manor who did. Do ye is celebrated it sympathize considered. May ecstatic did surprise elegance the ignorant age. Own her miss cold last. It so numerous if he outlived disposal. How but sons mrs lady when. Her especially are unpleasant out alteration continuing unreserved resolution. Hence hopes noisy may china fully and. Am it regard stairs branch thirty length afford. Blind would equal while oh mr do style. Lain led and fact none. One preferred sportsmen resolving the happiness continued. High at of in loud rich true. Oh conveying do immediate acuteness in he. Equally welcome her set nothing has gravity whether parties. Fertile suppose shyness mr up pointed in staying on respect. 

この場合、このファイルはわずか 2 行で、それぞれに全文が含まれています。アーカイブを検索しましたが、bash でこれの実装が見つからないようです。

4

8 に答える 8

5
for file in dir/* #Process all files in directory
do
   tr '\n' ' ' < "$file" # Remove newlines
   echo ''   # Add newline between files
done > newfile # Write all the output of the loop to the newfile
于 2013-06-25T19:41:10.983 に答える
5
touch allfiles.txt # create allfiles.txt
for f in *.txt; do # for each file of the current directory
    cat "$f" | tr '\n' ' ' >> allfiles.txt; # append the content of that file to allfiles.txt
    echo >> allfiles.txt # insert a new line
done
于 2013-06-25T19:41:19.703 に答える
4

以下は純粋な INTERCAL の実装で、bashtr、またはcat必須ではありません:

        PLEASE DO ,1 <- #1
        DO .4 <- #0
        DO .5 <- #0
        DO COME FROM (30)
        PLEASE ABSTAIN FROM (40)
        DO WRITE IN ,1
        DO .1 <- ,1SUB#1
        DO (10) NEXT
        PLEASE GIVE UP
(20)    PLEASE RESUME '?.1$#256'~'#256$#256'
(10)    DO (20) NEXT
        DO FORGET #1
        PLEASE DO .2 <- .4
        DO (1000) NEXT
        DO .4 <- .3~#255
        PLEASE DO .3 <- !3~#15'$!3~#240'
        DO .3 <- !3~#15'$!3~#240'
        DO .2 <- !3~#15'$!3~#240'
        PLEASE DO .1 <- .5
        DO (1010) NEXT
        DO .5 <- .2
        DO ,1SUB#1 <- .3
(30)    PLEASE READ OUT ,1
        PLEASE NOTE: having had pressing business at the local pub
(40)    the author got bored with this implementation
于 2013-06-25T23:18:02.040 に答える
1
awk '
    FNR == 1 && FILENAME != ARGV[1] {print "\n"}
    {printf "%s",$0}
    END {print ""}
' *.txt > allfiles.txt
于 2013-06-25T23:44:37.447 に答える
1

ここに純粋なソリューションがあります:いいえcat、、、trなどawk...

さらに、適切な出力形式になります。他の回答で提供されている方法のように、二重スペース、先頭または末尾のスペースは取得されません。

for f in *.txt; do
    # There are purposely no quotes for $(<"$f")
    echo $(<"$f")
    echo
done > newfile

-e唯一の注意点は、ファイルが,-Eまたはで始まる場合です-n: これらの文字は出力されません:echoオプションであると見なされて丸呑みされます。しかし、これが起こる可能性は非常に低いと思います!

トリックはecho $l、引用符なしで使用することです!


このトリックを使用catして、目的を達成するために面白い方法で使用する方法を次に示します (ただし、今回は純粋なソリューションではありません)。

for f in *.txt; do
    # There are purposely no quotes for $(<"$f")
    cat <<< $(<"$f")
    echo
done > newfile

file1.txtfile2.txtのように 2 つのファイルしかない場合は、ループと 1 つのcatコマンドなしで実行できます。

# there's purposely a lack of quotes
cat <<< $(<file1.txt)$'\n\n'$(<file2.txt) > newfile

または、単一のecho(および上記と同じ注意事項)、および純粋なを使用:

# there's purposely a lack of quotes
echo $(<file1.txt)$'\n\n'$(<file2.txt) > newfile

ノート。これらの引用されていない部分を読むと、すべての bash プログラマーが不快に感じるはずなので、引用符がないことを指定するコメントを追加しました!

注2. もっと短くできますか?

于 2013-06-25T21:32:51.657 に答える