如何使用linux终端打印每行中的每个单词?

时间:2013-10-09 18:23:34

标签: linux terminal

假设有这样的文件..(6 Ids)

k0012, k0013

k40035, k3089

Glc, 3-PGA

我想使用linux终端打印每行中的每个ID。 提前谢谢

4 个答案:

答案 0 :(得分:1)

您可以使用tr:

tr ' ,' '\0\n' file

或者gnu-sed:

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

或者gnu awk:

awk -F, '{print $1}' RS='[[:space:]]+' file

答案 1 :(得分:1)

使用grep

$ grep -oP "\b[^\s,]*\b" inputfile
k0012
k0013
k40035
k3089
Glc
3-PGA

答案 2 :(得分:0)

从“输入”中,不清楚ID是用空格还是用空格和逗号分隔的。如果后者是真的,你可能需要处理两者:

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

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

tr ' ,' '\n\n' < myfile | awk 'NF > 0'

答案 3 :(得分: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

......或者只有两列:

awk -F'[, ]*' '{printf("%s\n%s", $1, $2)}' input