2つのファイルをnano
し、そのうちの1つは改行を入力せずに「this」を読み取り、もう1つは改行を入力せずに「is」を読み取る場合、cat
2つのファイルを一緒に「thisis」のようなものにします。
代わりに、改行が自動的に挿入されます。
alec@ROOROO:~/$ cat test1 test2 > test3
alec@ROOROO:~/$ cat test3
this
is
では、改行を追加せずに2つのファイルを連結するにはどうすればよいですか?
これらの末尾の改行は、nano
ではなくcat
によって追加されます。
nano
の-L
パラメーターを使用します。
-L (--nonewlines)
Don't add newlines to the ends of files.
または〜/ .nanorcのnonewlines
コマンド:
set/unset nonewlines
Don't add newlines to the ends of files.
それが起こっている場合、あなたは間違いなくあなた自身に改行文字を挿入しています。 cat
は、いつものようにそれらを連結します。 cat
を使用して最初に書き込み、次に連結することで、これをテストできます。
cat > file1
# write something
# hit Ctrl+D twice to end file
# repeat steps with file2
cat file1 file2
cat
は改行を追加しません。改行はtest1
の終わりにすでに存在します。これは正常です。テキストファイルは一連の行で構成され、1行は一連の印刷可能な文字とそれに続く改行文字で構成されます。したがって、空でないテキストファイルはすべて改行文字で終わります。
2つのテキストファイルがあり、それらを連結する場合は、cat
を使用します。最初のファイルの行に続いて2番目のファイルの行が表示されます。
より複雑なこと、つまり最初のファイルの最後の行を2番目のファイルの最初の行に結合する場合は、より複雑なコマンドが必要です。たとえば、最初のファイルの最後の文字を削除して、2番目のファイルを追加できます。 GNU coreutils(つまり、組み込みLinux以外の場合)を使用すると、次のことができます。
{ <test1 head -c -1 && cat test2; } >test3
または2つのステップで:
<test1 head -c 1 >test3 && <test2 cat >>test3
一方通行:
paste -d'\0' test1 test2
出力:
thisis