0

プログラムによって台無しにされたファイルがあり、今ではすべての行が次のようになっています。

somelongstring:number   number    number   number   ... a lot more columns

(タブ区切り) 最初の列が somelengthystring:number の形式の場合は、すべての行を変更して、数値だけに変更する必要があります (文字列とコロンを削除します)。

awk で split を使用して、次のように文字列とコロンを取り除くことができることを知っています。

awk '{
   split($1,array,":")
} 
END{
   print array[2],$2,$3...
}'

しかし、問題は、最初の列だけが必要ではないということです。行全体が必要で、最初の列を修正したいだけです。唯一の問題は、非常に多くの列があり、$2、$3、... を $35 まで入力するのはかなりばかげているということです。これを修正するより良い方法は何ですか?

4

5 に答える 5

1

$ 2を除いて、これまでに使用したものが機能する場合、....部分:

awk '{
    split(..)
    $1=array[2]
    print
}'
于 2013-03-11T21:23:38.923 に答える
1

を使用しsedます。^行の先頭( )から最初のコロンまでのすべての文字を削除します。

sed 's/^[^:]*://' infile
于 2013-03-11T21:24:04.793 に答える
1

Perlを使用すると、次のことができます。

cat file.txt | perl -pe 's/.*?://'
于 2013-03-11T21:21:19.370 に答える
0

Using cut

cut -d: -f2- file.txt

This uses the colon as a delimiter and keeps everything to the right of it.

于 2013-03-11T21:36:10.977 に答える