将(各种大小的)行分成两列,将第一个单词保留在列中

时间:2019-06-27 15:39:50

标签: awk text-formatting

我想重新格式化一个包含逐行包含多个单词的文本文件:每个单词应在单独的一行中,并以原始行的第一个单词开头。

原始文本文件如下所示:

line1 word1 word2 word3
line2 word4
line3 word5 word6

,预期结果应该是

line1 line1
line1 word1
line1 word2
line1 word3
line2 line2
line2 word4
line3 line3
line3 word5
line3 word6

实际上,所有单词都是相同的:一行的第一个单词与其他单词之间没有区别,solution无效。

作为awk的初学者,我尝试过

awk 'BEGIN {FS=" "; OFS="\n"} { x=$1; $1=$1; printf "%s", x "\t" $0 "\n"}'

但这会导致

line1   line1
word1
word2
word3
line2   line2
word4
line3   line3
word5
word6

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

请您尝试以下。

awk '{for(i=1;i<=NF;i++){print $1,$i}}'  Input_file