Linux 如何使用sed仅显示一行中的一些单词?

Linux 如何使用sed仅显示一行中的一些单词?,linux,sed,grep,Linux,Sed,Grep,我试图使用sed只显示一行中的1st、2nd和8th单词 我的问题是单词是随机的,单词之间的空格也是随机的。。。例如: QST334 FFR67 HHYT 87UYU HYHL 9876S NJI QD112 989OPI 是否有办法将其输出为第1、第2和第8个单词: QST334 FFR67 QD112 感谢您对正确方向的任何建议或提示 使用awk awk '{print $1,$2,$8}' file 在行动中: $ echo "QST334 FFR67 HH

我试图使用sed只显示一行中的
1st
2nd
8th
单词

我的问题是单词是随机的,单词之间的空格也是随机的。。。例如:

QST334   FFR67     HHYT  87UYU HYHL 9876S   NJI QD112    989OPI
是否有办法将其输出为第1、第2和第8个单词:

QST334 FFR67 QD112
感谢您对正确方向的任何建议或提示

使用awk

awk '{print $1,$2,$8}' file

在行动中:

$ echo "QST334 FFR67 HHYT 87UYU HYHL 9876S NJI QD112 989OPI" | awk '{print $1,$2,$8}'
QST334 FFR67 QD112
使用awk

awk '{print $1,$2,$8}' file

在行动中:

$ echo "QST334 FFR67 HHYT 87UYU HYHL 9876S NJI QD112 989OPI" | awk '{print $1,$2,$8}'
QST334 FFR67 QD112

您实际上不需要像另一个答案中提到的那样将
放在两列之间。默认情况下<代码> AWK<代码>考虑单个空白空间作为输出字段分隔符AKA <代码> OFS < /C>。因此,只需在所需列之间使用逗号即可

因此,以下内容就足够了:

awk '{print $1,$2,$8}' file
例如:

echo "QST334   FFR67     HHYT  87UYU HYHL 9876S   NJI QD112    989OPI" |awk '{print $1,$2,$8}'
QST334 FFR67 QD112
但是,如果您希望使用其他
OFS
,则可以执行以下操作:

echo "QST334   FFR67     HHYT  87UYU HYHL 9876S   NJI QD112    989OPI" |awk -v OFS="," '{print $1,$2,$8}'
QST334,FFR67,QD112

请注意,这将在输出列之间放置一个逗号

您实际上不需要像另一个答案中提到的那样将
放在两列之间。默认情况下<代码> AWK<代码>考虑单个空白空间作为输出字段分隔符AKA <代码> OFS < /C>。因此,只需在所需列之间使用逗号即可

因此,以下内容就足够了:

awk '{print $1,$2,$8}' file
例如:

echo "QST334   FFR67     HHYT  87UYU HYHL 9876S   NJI QD112    989OPI" |awk '{print $1,$2,$8}'
QST334 FFR67 QD112
但是,如果您希望使用其他
OFS
,则可以执行以下操作:

echo "QST334   FFR67     HHYT  87UYU HYHL 9876S   NJI QD112    989OPI" |awk -v OFS="," '{print $1,$2,$8}'
QST334,FFR67,QD112

请注意,这将在输出列之间放置一个逗号

另一种解决方案是使用:


另一种解决方案是使用:

这可能适用于您(GNU-sed):

将空格转换为换行符。将每一行作为单独的文件进行评估,并仅打印所需的行,即字段。用空格替换剩余的换行符。

这可能适合您(GNU-sed):


将空格转换为换行符。将每一行作为单独的文件进行评估,并仅打印所需的行,即字段。用空格替换剩余的换行符。

使用
cut
代替
cut