0

こんにちは、テキスト ファイル (file1.txt) があるとします。

file1.txt には多くの単語とスペースが含まれており、文字 (cR+LF) を入力します。後に続く特定の単語をエンター文字に置き換えて、その単語だけに置き換えたいです。つまり、cr+lf 文字を削除するということです。

どのように ?

ありがとうございました

4

3 に答える 3

0

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)に変換してから、変換を行う必要がある場合があります。

于 2010-12-07T15:43:05.077 に答える
0

正規表現を使用すると、これを簡単に処理できます。

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)
于 2010-12-07T08:33:06.740 に答える
0

プログラムでそれを行う方法について質問していると思います。
LF と CR は文字であるため、ASCII コード (10,13) が割り当てられています。テキスト ファイルをロードし、それを新しいバッファに単語ごとにコピーする必要があります。置き換えたい単語に遭遇するたびに、10,13 が続いているかどうかを確認し、その場合はそれらの文字をコピーしないでください。
次に、新しいバッファをファイルに書き戻します。

于 2010-12-07T08:40:49.590 に答える