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

你在追求这个吗?使用此输入:(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 回答
0

从您的“输入”中,不清楚 ID 是由空格还是由空格和逗号分隔。如果后者为真,您可能需要同时处理这两个问题:

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

(您需要uniq删除那些过多的空白行,尽管使用它可能会更好awk):

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