2016-05-01 10 views
1

私は以下のタブで区切られた入力ファイルを持っています。私は行末の末尾のタブを削除して、 "ファイル内"にして、変更されたデータを新しいファイルに出力する必要がないようにします。これは、データがたくさんあるため、効率が悪く、データを読み込んで再度書き出したくないからです。これを行うにはMacの行の末尾にあるタブを削除する

Hybridization REF Gene_Symbol Chromosome Genomic_Coordinate TCGA-13-A5FT-01A-11D-A409-05 TCGA-13-A5FU-01A-11D-A409-05 TCGA-29-A5NZ-01A-11D-A409-05 TCGA-3P-A9WA-01A-11D-A409-05 TCGA-59-A5PD-01A-11D-A409-05 TCGA-5X-AA5U-01A-11D-A409-05 TCGA-OY-A56P-01A-12D-A409-05 TCGA-OY-A56Q-01A-11D-A409-05 TCGA-VG-A8LO-01A-11D-A409-05 TCGA-WR-A838-01A-12D-A409-05 
cg00000029 RBL2 16 53468112 0.162232896986279 0.191627667901702 0.0712181967886229 0.0797617926225958 0.134907151266991 0.0541415985613948 0.0898579298345672 0.037865566345129 0.0681542463965581 0.101053013486289 
cg00000108 C3orf35 3 37459206 NA NA NA NA NA NA NA NA NA NA 
cg00000109 FNDC3B 3 171916037 NA NA NA NA NA NA NA NA NA NA 

、私はのバリエーション使用してきました:

sed -i '' 's/\t\n/\n/g' input.txt 

をしかし、これはさらに末尾のタブを削除しません。私はMac OS Xを使用していますので、GNUはありません。解決策は何ですか?

sed -i '' 's%\t*$%%g' input.txt 

sed式がゼロまたは複数のタブ(\t*)を置き換えます。私はラインマーカー($)の先端を使ってテキストファイルにhere

答えて

5

\tがsedによって直接解釈されると思われる回答は、OSXにはないGNU sedを想定しています。ただし、あなたのスクリプトの簡単なprintfの変換を持っているので、bashを持っています:

$ sed -i '' -e $'s/\t$//' input.txt 

をこの場合、スクリプトはバックスラッシュのエスケープシーケンスを展開する引用符で引用されています。これはBASHの機能ですが、これはsedにもっと賢明に詰めるために使用しています。

あなたの質問にスクリプトの変種にこれを比較すると、私は検索文字列の末尾を示すために、検索正規表現の中にドル記号を入れている - このスクリプトは基本的に言う:

  • s - 代わりに
  • /\t$ - 行の末尾にあるタブ。
  • // - 空の文字列を使用します。

置換のためにg( "グローバル")オプションは不要です。これは、sedがファイルの各行に自動的に置換を適用するためです。

+0

私はとにかくそれをしましたが、まず 'dos2unix'コマンドを実行しなければなりませんでしたか? – user3313178

+0

@ghoti:私の答えのコメントありがとう。確か目を開けてください。 – sjsam

+0

@ user3313178 - これはうれしいことです。dos2unixに関しては、あなたの質問の中にあなたが必要とするものは何もないが、 'cat -vet file.txt | less'または 'od -c file.txt |あなたが扱っている生データのより良いアイデアを得るためには「少ない」です。もしあなたがDOSの行末を持っていれば、それらを削除するための戦略がたくさんあります。ここではおそらくここに繰り返しはありません。 :-) – ghoti

0

を掲載している

EDIT

空の文字列で

man sedを参照してください。

+0

'-i'の後ろに接尾辞がありません。 Linuxではオプションですが、OS Xでは必須です。 – Barmar

+0

'-e'オプションは、式が1つしかない場合には必須ではありません。 – Barmar

+0

@Barmar、ありがとう。一定。 –

関連する問題