既存のCSVに新しいフィールドを追加するスクリプトがありますが^M
、古い行の最後に文字が表示されているため、新しいフィールドは同じ行ではなく新しい行に表示されます。^M
Perlを使用してCSVファイルから文字を削除するにはどうすればよいですか?
114116 次
11 に答える
51
^Mはキャリッジリターンです。あなたはこれを行うことができます:
$str =~ s/\r//g
于 2009-03-16T14:51:33.377 に答える
27
またはワンライナー:
perl -p -i -e 's/\r\n$/\n/g' file1.txt file2.txt ... filen.txt
于 2009-03-16T16:36:04.203 に答える
15
これもできることがわかりました:
$line=~ tr/\015//d;
于 2009-03-16T17:36:39.533 に答える
8
少し関係ありませんが、Perl を使用してコマンド ラインから ^M を削除するには、次のようにします。
perl -p -i -e "s/\r\n/\n/g" file.name
于 2009-03-16T17:45:32.787 に答える
3
この 1 つのライナーは、すべての ^M 文字を置き換えます。
dos2unix <file-name>
これは、Perl 内から、または Unix プロンプトで直接呼び出すことができます。
于 2012-08-03T23:04:29.990 に答える
2
DOSスタイルをUNIXスタイルの行末に変換するには:
for ($line in <FILEHANDLE>) {
$line =~ s/\r\n$/\n/;
}
または、UNIXおよび/またはDOSスタイルの行末を削除するには:
for ($line in <FILEHANDLE>) {
$line =~ s/\r?\n$//;
}
于 2009-03-16T14:51:33.627 に答える
1
これが私の問題を解決したものです。^M はキャリッジ リターンであり、Perl スクリプトでは簡単に回避できます。
while(<INPUTFILE>)
{
chomp;
chop($_) if ($_ =~ m/\r$/);
}
于 2016-03-17T06:57:53.787 に答える
-1
インビヒット:
。
それからs/Control-VControl-M//g
。
Control-V
Control-M
明らかにそれらのキーです。それを綴らないでください。
于 2009-03-16T17:45:19.933 に答える