2016-05-02 5 views
0

私はこのようになります数百万行の2列と、タブ区切りのテキストファイルがあります:私は列2 + 1の値に等しいファイルに追加の列を追加したい同じファイル内の既存の列の値と等しい列を作成しますか?

1 693731 
1 729679 
1 730087 
1 731718 
1 734349 

を上記の例では、次のようになります。

1 693731 693732 
1 729679 729680 
1 730087 730088 
1 731718 731719 
1 734349 734350 

UNIXシェルを使用してこれを行うにはどうすればよいでしょうか?どんな入力も非常に高く評価されます。

+2

コードを投稿するのを忘れてしまった! StackOverflowは、人々がコードを修正する手助けをしています。無料のコーディングサービスではありません。どのコードもコードなしより優れています。たとえあなたがそれを書く方法を知らなくても、プログラムがうまくいくと思っていることをメタコードが示してくれます。 – ghoti

答えて

0

柱状データを扱うときは、「awk」が良いツールです。また、内蔵の数学の能力を持っているので、このために自然です:

awk '{ print $1"\t"$2"\t"($2+1); }' < data.tsv 

awk実行入力の各行のため、このコード。これらの行のそれぞれについて、$表記は列を示します。$1は現在の行の最初の列、$2は2番目の列のように続きます。

私は明示的な列列挙を好むが、あなたは$0は、現在の行のすべてのデータを表しghotiの最適化、使用できますので、UNIXツールボックスアプローチの

awk '{ print $0"\t"($2+1); }' < data.tsv 

を、この問題を解決するための多くの方法があります。これが「ベスト」であるかどうかは、速度、保守性、移植性などの多くの要素によって決まります。

+2

あるいは 'awk '(print $ 0、$ 2 + 1)''でもありますが、残念ながらOPのコードを修正するのではなく、推奨されるツールを求めているので、質問は話題にはなりません。 – ghoti

関連する問題