0

このようなファイルがあるとします..(6 ID)

k0012, k0013

k40035, k3089

Glc, 3-PGA

Linuxターミナルを使用して、各行の各IDを出力したい。前もって感謝します

4

4 に答える 4

2

trを使用できます:

tr ' ,' '\0\n' file

または gnu-sed:

sed 's/, */\n/g' <file

または gnu awk:

awk -F, '{print $1}' RS='[[:space:]]+' file
于 2013-10-09T18:25:41.440 に答える
1

使用grep:

$ grep -oP "\b[^\s,]*\b" inputfile
k0012
k0013
k40035
k3089
Glc
3-PGA
于 2013-10-09T18:41:56.613 に答える
0

あなたの「入力」から、IDが空白で区切られているのか、空白とカンマで区切られているのかは不明です。後者の場合は、おそらく両方を処理する必要があります。

tr ' ,' '\n\n' < myfile | uniq

(これらの余分な空白行を削除する必要がありuniqますが、 for を使用したほうがよいかもしれませんawk):

tr ' ,' '\n\n' < myfile | awk 'NF > 0'
于 2013-10-09T18:28:52.963 に答える
0

この後ですか?この入力の使用:(6 Ids) k0012, k0013 k40035, k3089 Glc, 3-PGA

$ awk -F'[, ]*' '{for(i=3;i<=NF;i++)print $i}' input
k0012
k0013
k40035
k3089
Glc
3-PGA

入力が代わりにこれである場合:

k0012, k0013

k40035, k3089

Glc, 3-PGA

試す:

$ awk -F'[, ]*' '{for(i=1;i<=NF;i++)print $i}' input
k0012
k0013
k40035
k3089
Glc
3-PGA

...または2つの列しかありません:

awk -F'[, ]*' '{printf("%s\n%s", $1, $2)}' input
于 2013-10-09T18:31:30.880 に答える