1

タブ区切りのファイルがあります。再フォーマットして元のファイルをすべて1行に削除したいと思います。

これはタブ区切りのファイルです。たとえば、次のようにします。

特定の列(つまり、列3)を削除し、中央に別のid列(つまり、btw列1と2)を追加します。ここで、各行はidです(たとえば、row1はid1、row2はid2など)。次に、最後にテキスト(つまり、各行がhelloであるテキスト)で別の列を追加します。

すべてが1行で変更され、最後に元のファイルと、元のファイルと同じ新しいファイルが削除されます。

例:

fnamein.txt

rogelio\tdelgado\t3453434\tlas encinas\n
mario\tmoreno\t4563432\tcasinos\n
etc...


fname.out

rogelio\tid1\tdelgado\t3453434\tlas encinas\taddress\n
mario\tid2\tmoreno\t4563432\tcasinos\taddress\n
etc...

(ご覧のとおり、列1と2の間にid列を追加し、最後にアドレス列(常に同じ単語)を追加しました)。

Linuxでそれを行う簡単な方法があるのだろうかと思っています。私はLinuxコマンドの力に不慣れです。

ありがとう!

4

3 に答える 3

2

別の方法はawkを使用することです

awk -F'\t'  '{print $1, $2, $3}'   filename

ここで、-Fはフィールドセパレータです。awkはファイルをそれぞれのフィールドに分割し、フィールドを印刷するだけです。$ 1は最初のフィールドなどです。フィールドをスキップするには、フィールドを省略します。

awk '{print $1, $3}'  filename

最初と3番目のフィールドのみを印刷します。

于 2012-10-13T01:38:42.580 に答える
1

一方通行:

perl -i -pwe 's/^([^\t*])\t([^\t*])\t[^\t*]\t(.*)/$1\tid$.\t$2\t$3\taddress/;' FILENAME
于 2012-10-13T01:37:41.897 に答える
1

さて、回答されたunixrulesは、質問全体に答えるのに役立ちました:

awk -F'\t' 'BEGIN {OFS = FS} {id++}{print $1,"id"id,$2,$3,$4,"address"}' filein.txt > test.tmp && mv test.tmp filein 。TXT。

これらの答えは、私が最初に意図したこととまったく同じです。

ご協力ありがとうございます。

于 2012-10-13T02:52:58.530 に答える