1

ファイル A.tsv、B.tsv、および C.tsv があるとします。

実行cat -n A.tsv > A-id.tsvは、1 つのファイルに必要な出力です。行IDが前のファイルから連続し、3つの個別のファイル、A-id.tsv、B-id.tsv、およびC-idを取得できるように、3つのファイルすべてを処理する簡単なbashコマンドをどのように作成しますか? .tsv?

たとえば、A.tsv に 3 行ある場合、B.tsv は のような出力形式で 4 行から始まりますcat -n B.tsv

4

2 に答える 2

3

なぜあなたはしないのですcat A.tsv B.tsv C.tsv | cat -n > ABC.tsvか?

トヴァルバーグ経由

いっそのこと、 cat -n A.tsv B.tsv C.tsv > ABC.tsv

アップデート:

これがあなたの Linux ディストリビューションではうまくいかなかったことを考えると、いくつかの代替案があります:

cat A.tsv B.tsv C.tsv | nl > ABC.tsv

cat A.tsv B.tsv C.tsv | grep -n '^' > ABC.tsv-- このオプションは、別のタイプの形式、つまり $linenumber: $line になります。

于 2012-10-22T15:23:09.840 に答える
1

これは awk の代替手段です。

awk '{outfile=FILENAME; sub(".tsv", "-id.tsv", outfile); printf("%6d %s\n", NR, $0) >outfile;}' A.tsv B.tsv C.tsv

更新、最適化されたバージョン:

awk 'FNR==1 {outfile=FILENAME; sub(".tsv", "-id.tsv", outfile);} {printf("%6d %s\n", NR, $0) >outfile;}' A.tsv B.tsv C.tsv

于 2012-10-22T21:03:56.450 に答える