
答え1
^Mは、Windowsがファイルをインポートまたは編集することを意味します。
dos2unix
ファイルのコマンドを使用して、ファイルをUnixテキストモードに変換します。
DOSは改行と改行「\ r \ n」を行終端として使用し、Unixは改行「\ n」のみを使用します。 ^M は "追加" \r 文字を視覚的に表現したものです。
このコマンドをインストールするには: dos2unix
(Debian ベースのディストリビューションで):
sudo apt-get install dos2unix
またはMac(MacPorts)で:
sudo port install dos2unix
または、sedを使用して次のようにこれを実行できます。
sed 's/\r$//' dosfile.txt > unixfile.txt
答え2
join(1)
(少なくとも私が使用しているバージョンは)リンク^M
ファイルに追加または入力しませjoin
んが^M
。 Hexビューアといくつかのテストケースで進捗状況を確認できます。
$ echo "1 a" > test1
$ echo "1 b" > test2
$ join test1 test2 | od -bc
0000000 061 040 141 040 142 012
1 a b \n
0000006
$
^M
そして、入力ファイルにテストケースがあります:
$ perl -E "say qq(1 a\r)" > test1
$ perl -E "say qq(1 b\r)" > test2
$ join test1 test2 | od -bc
0000000 061 040 141 015 040 142 015 012
1 a \r b \r \n
0000010
$
dos2unix
入力ファイルを変更する方法はいくつかあります(ファイルが行区切り文字の古代のtr
MacOS伝統を使用している場合は\r
これは悪い考えですが)。
$ od -bc test1
0000000 061 040 141 015 012
1 a \r \n
0000005
$ tr -d '\r' < test1 > foo
$ mv foo test1
$ od -bc test1
0000000 061 040 141 012
1 a \n
0000004
$