3

約900行のデータを含むパイプ区切りのテキストファイルがあります。各行には、最後にユーザー名が付いた一連の番号が含まれています。例えば

2792|5750|125|4.0|0.25|||6|2|user1
2802|6000|126|4.0|0.25|||2|3|user2
2801|6000|125|4.0|0.25|||4|4|user2
2805|5500|125|4.5|0.25|||3|2|user1
2805|6250|122|4.5|0.25|||4|7|user3
2811|4750|125|3.0|0.25|||4|2|user1
2828|5750|121|4.0|0.25|||6|2|user2

私がやりたいのは、3つの新しいファイルを作成することです。ユーザーごとに1つで、データのみが含まれています。(たとえば、user1のファイルには、元のファイルの1行目、4行目、および6行目のみが含まれます)。これを行うには、awkまたはsedを使用する必要がありますか?

4

3 に答える 3

7

一方通行:

awk -F "|" '{ print > $NF }' file

結果は次のgrep . user*とおりです。

user1:2792|5750|125|4.0|0.25|||6|2|user1
user1:2805|5500|125|4.5|0.25|||3|2|user1
user1:2811|4750|125|3.0|0.25|||4|2|user1
user2:2802|6000|126|4.0|0.25|||2|3|user2
user2:2801|6000|125|4.0|0.25|||4|4|user2
user2:2828|5750|121|4.0|0.25|||6|2|user2
user3:2805|6250|122|4.5|0.25|||4|7|user3

また、ファイル拡張子を追加したい人もいます。これは次のように実行できます。

awk -F "|" '{ print > $NF ".txt" }' file
于 2013-02-06T19:47:02.717 に答える
1

どうしてgrep

grep user1 bigfile > file_for_user1
grep user2 bigfile > file_for_user2
grep user3 bigfile > file_for_user3
于 2013-02-06T19:47:35.270 に答える
0
for THEUSER in `cat file | awk -F'|' '{print $10}' | sort | uniq`; do grep $THEUSER file > $THEUSER; done
于 2013-02-06T19:49:18.553 に答える