2010-12-07 11 views
0

こんにちはすべて たちは、テキストファイル(FILE1.TXT)テキストファイルの単語を別の単語やアクションに置き換えるにはどうすればよいですか?

FILE1.TXTは、多くの単語とスペースを含む文字(CR + LF)を入力があるとします。 私は、入力文字に続く特定の単語を置き換え、その単語だけで置き換えたいと思っています。私はcr + lf文字を削除することを意味します。

どのようにですか?

は、正規表現の

答えて

0

使用は、この短い作品を作る必要がありますありがとう:

wordこれが正確に行われている方法

word\r\nを交換ご使用の環境/エディタ/ツールに依存します。あなたはcf + lfを言いました。これはあなたがWindowsを使っていることを示唆しています。

たとえば、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) 
+0

私の具体的な言葉にはさまざまな形があります。たとえば、私のキーワードがNPNの場合、02NPNPAGLUBE、12NPNSEALANTなどの単語がありますが、問題はこれらすべての単語の最後にあります。段落記号(文字を入力)があり、それを削除して2スペース。どうやって?どのように私は単語を指すことができますか? – odiseh

0

私はあなたがプログラム的にそれを行う方法について尋ねていると仮定。
LFとCRは文字で、ASCIIコードが割り当てられています(10,13)。テキストファイルをロードし、単語ごとに新しいバッファにコピーし、置換する単語に遭遇するたびにそれをコピーする必要があります - 10,13が続くかどうかをチェックし、そうであればそれらの文字をコピーしないでください。
新しいバッファをファイルに書き戻します。

0

あなたがLFにCRLFを変換したい場合:

sed 's/.$//'    # assumes that all lines end with CR/LF 

あなたは完全に

cat file1.txt | tr '\n' ' ' # join the lines with a space 
cat file1.txt | tr -d '\n' # join the lines without a space 

をCRLFを削除したい場合は、まず、UNIX(LFにCRLF)に行末を変換する必要があります翻訳を行います。

関連する問題