三种方式可以实现
cat nowcoder.txt | sed 's/ /\n/g' | awk '{if(length($0)<8) print}'
cat nowcoder.txt | awk 'BEGIN{RS=" "} {if(length($0)<8) print $0;}'
cat nowcoder.txt | xargs -n 1 | awk '{if(length($0)<8) print;}'
本题的考点就在于如何自定义行分隔符,这里就用到了三种方式。
sed命令可以拆成 s/pattern/replacement/flags 来看,s表示后边的是替换指令,这里是将空格" "替换为换行“\n”,于是pattern和replacement依次填入" "和"\n"。g我猜就是global,表示全局匹配并替换,如果没有g,则只会匹配并替换第一个。
这一段指令会使得文本中每行只显示一个单词。

第二种方式里边的RS指row split,是一个预置变量,可以用这种方式来自定义换行符,类似的还有FS(filed split),可以自定义字段分割符,当然也可也这样指定字段分割符:`awk -F :`,即将 ":" 作为字段(列)分隔符。

第三种方式我觉得是最万能的,完整版应该是这样:
echo "nameXnameXnameXname" | xargs -d X -n 
-d自定义输入定界符,-n 1 表示每得到一个输入,便输出一行。文档:xargs