
1つ目テキストファイルと2つ目のテキストファイルの間に改行文字を入れながら2つのファイルを連結し、1つ目のファイルに上書き保存する方法をお教え下さい。
以下のスクリプトを考えましたが、これでは改行文字が削除されてしまいます。
(f1.txtの内容)
ab
(f2.txtの内容)
xy
(スクリプト)
#!/bin/bash
echo -e "\n" >> f1.txt
echo -e `cat f1.txt f2.txt` > f1.txt
(できあがったf1.txtの内容)
ab xy
2018年1月21日
No.1ベストアンサー
- 回答日時:
Windows のメモ帳などで開くなら、改行コードは CR LF です。
\r = CR
\n = LF
#!/bin/bash
echo -e "\r\n" >> f1.txt
cat f2.txt >> f1.txt
bx2様、ありがとうございます。
なぜか、"cat f2.txt >> f1.txt"に思い至らず、
"cat f1.txt f2.txt > f1.txt" というものに取りつかれていました。
2018年1月21日
No.2
- 回答日時:
` (バッククオート) の動作を誤解しています。
` は、それで囲まれた文字列を「コマンド」と見做して実行し、その結果'(標準出力) を文字列にする機能があります。
https://linuxjm.osdn.jp/html/GNU_bash/man1/bash. …
> コマンド置換
> 末尾の改行文字は削除されます。
> 文字列の途中にある改行文字は削除されませんが、 単語分割の際に削除されることがあります。
シェルスクリプトでは、 置換を行なった最終的な状態でコマンドを実行します。
echo -e `cat f1.txt f2.txt`
は
echo -e ab\
xy
という状態に置換されて実行されます。
(継続行なので、末尾に\を付けました)
このとき、改行はただの区切り文字扱いなるので
echo -e ab xy
と同じことになります。
コマンド置換を使っているのは、何か意図があるのでしょうか?
echo -e "\n" >> f1.txt
は「 echo -e "\n" を実行し、その出力を f1.txt に追加する 」の意味です。
だとすれば
「ファイルf2.txt の内容を出力する」コマンドの出力を f1.txt に追加するようにすればいいだけでは?
cat f1.txt f2.txt
を使うのなら、一旦別ファイルに保存して、それをf1.txtにコピーするという方法もあります。
kmee様、ありがとうございます。
別ファイルへの保存を避けることを考えていましたが、bx2様へのお礼に書きましたとおり、誤ったことを考えていました。
2018年1月21日
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 入力待ちをして、受け取った正の整数が表す行数だけ既存 4 2022/07/05 10:12
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】テキストファイルから特...
-
コマンドにてテキストファイル...
-
Powershell ではUTF8出力を表示...
-
バッチファイル 現在のフォルダ...
-
FTPのバッチファイルで日付を引...
-
リダイレクト >> を複数のファ...
-
月末日のフォルダを自動作成したい
-
[linux cli]連番でテキストファ...
-
echo "abc" >> test.txt で、先...
-
bashで、gotoのようなラベルに...
-
ubuntuで、viエディタを使って...
-
ubuntuで、viエディタを使って...
-
シェル ディレクトリ内検索につ...
-
NULLの置き換えについて
-
xcopyで特定のファイルのみをコ...
-
エクセルのセルに設定したハイ...
-
コマンド実行結果を環境変数に...
-
echoの出力の最後のスペースを...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
echoの出力の最後のスペースを...
-
echo "abc" >> test.txt で、先...
-
【VBA】テキストファイルから特...
-
コマンドプロンプトで相対パス...
-
リダイレクト >> を複数のファ...
-
コマンドプロンプトで標準エラ...
-
バッチファイル 指定行の切り出し
-
コマンド実行結果を環境変数に...
-
コマンドにてテキストファイル...
-
バッチファイルのfor文を使って...
-
バッチファイル 現在のフォルダ...
-
NULLの置き換えについて
-
FTPのバッチファイルで日付を引...
-
バッチファイルで改行の出力
-
.txtって、縦書きにはならない...
-
複数のテキストファイルをひと...
-
ワードのテキストボックスの中...
-
複数テキストファイル連結につ...
-
【DOSコマンド】for の デリミ...
おすすめ情報