こんにちは、テキスト ファイル (file1.txt) があるとします。
file1.txt には多くの単語とスペースが含まれており、文字 (cR+LF) を入力します。後に続く特定の単語をエンター文字に置き換えて、その単語だけに置き換えたいです。つまり、cr+lf 文字を削除するということです。
どのように ?
ありがとうございました
こんにちは、テキスト ファイル (file1.txt) があるとします。
file1.txt には多くの単語とスペースが含まれており、文字 (cR+LF) を入力します。後に続く特定の単語をエンター文字に置き換えて、その単語だけに置き換えたいです。つまり、cr+lf 文字を削除するということです。
どのように ?
ありがとうございました
CRLFをLFに変換する場合:
sed 's/.$//' # assumes that all lines end with CR/LF
CRLFを完全に削除したい場合
cat file1.txt | tr '\n' ' ' # join the lines with a space
cat file1.txt | tr -d '\n' # join the lines without a space
最初に行末をunix(CRLFからLF)に変換してから、変換を行う必要がある場合があります。
正規表現を使用すると、これを簡単に処理できます。
word\r\n
と置き換えますword
これが正確にどのように行われるかは、環境/エディター/ツールによって異なります。Windowsを使用していることを示唆するcf + lfについて言及しました。
たとえば、 Notepad++を使用する場合、組み込みの正規表現サポートがあり、これらの機能を使用して目標を達成できます。
更新:私はそれが動作するこの変種を試しました:
Windows 用のVimをダウンロードします。
Vim でファイルを開きます。
その中で、次のコマンドを発行します。
%s/\v([[:digit:]]+NPN[[:alpha:]]+)\n/\1 /g
説明:
%s - work for all lines
\v - easier regex manipulation regarding backslashes
([[:digit:]]+NPN[[:alpha:]]+) - match some digits, then NPN, then letters and capture this
\n - match end of line
\1 - replace everything with first group and two spaces
g - do this many times for each line (this is basically optional)
プログラムでそれを行う方法について質問していると思います。
LF と CR は文字であるため、ASCII コード (10,13) が割り当てられています。テキスト ファイルをロードし、それを新しいバッファに単語ごとにコピーする必要があります。置き換えたい単語に遭遇するたびに、10,13 が続いているかどうかを確認し、その場合はそれらの文字をコピーしないでください。
次に、新しいバッファをファイルに書き戻します。