2011-08-02 5 views
4

sedの新機能として、sedは\ r文字が有効な行区切り文字ではないと考えています。sedが行区切り文字と考える変更方法

多くの行のテキストを処理するときに、どの文字をselに使用して、行区切り記号として使用したいのか知っていますか?

+0

あなたは、常に複数のパスを行い、その後、再び、周りのあなたの文字を入れ替えることができ - のためhttp://stackoverflow.com/questions/1251999/を参照してください。この部分の最初の部分 –

+0

どのようにsedを使用していますか? Windowsのcmdラインから、sed.exeポートを使ってWindowsに接続しますか?またはCygwinを介して?または?? ftpを使ってWindowsからUnixにファイルを移動してファイルをsedingする場合、ftpにはシステム間で変換するオプションがあります。がんばろう。 – shellter

+0

多分、 '\ r'は有効な行デリミタではないでしょうか?オリジナルのMac OSを使用しているのでなければ、もちろんです。 – whitequark

答えて

0

私が知る限り、あなたはできません。デリミタとして改行を使用すると何が問題になりますか?あなたの入力がDOSスタイルの\ r \ n行末を持っている場合は、それらを削除するために前処理することができ、必要に応じて後で返すことができます。 awk 'BEGIN {RS = "\r"} ...

それとも、と変換することができます:

+0

多くの\ * nixファイルシステムのファイル名のリストのように、改行が入力内の有効な文字である状況でヌルデリミタが必要な場合があります。 – jw013

2

あなたはAWKのRS(レコードセパレータ)変数でそれを指定することができます明確かつ少ないあいまいな、私は広範囲にthe od utilを使用します以下の例を作るために(tr '\r' '\n'

1

。)

フラグなどではできません。私は最高の解決策は、前の答えで引用されたものであると確信しています:trを使用しています。あなたは下記のようなファイルがある場合:

$ od -xc slashr.txt 
0000000  6261 0d63 6564 0d66         
      a b c \r d e f \r         
0000010 

trを使用しての様々な方法があります。 2つの異なる文字を2つのパラメータに渡し、最初のパラメータをtrに置き換えて2番目のパラメータに置き換えます。

$ tr '\r' '\n' < slashr.txt | od -xc 
0000000  6261 0a63 6564 0a66         
      a b c \n d e f \n         
0000010 

グレート:tr '\r' '\n'のための入力としてファイルの内容を送信する、私たちは次のような結果を得ました!今、私たちはsed使用することができます。

$ tr '\r' '\n' < slashr.txt | sed 's/^./#/' 
#bc 
#ef 
$ tr '\r' '\n' < slashr.txt | sed 's/^./#/' | od -xc 
0000000  6223 0a63 6523 0a66         
      # b c \n # e f \n         
0000010 

をしかし、私はあなたが正しい、行区切り文字として\rを使用する必要がありますね?この場合、単に変換を逆にtr '\n' '\r'を使用します。

$ tr '\r' '\n' < slashr.txt | sed 's/^./#/' | tr '\n' '\r' | od -xc 
0000000  6223 0d63 6523 0d66         
      # b c \r # e f \r         
0000010 
+0

Bravo、問題のデバッグに関する優れた説明。私は自分のツールキットにodを追加しています。ありがとう! – shellter

関連する問題