Разбить строки (разных размеров) на два столбца, сохранив первое слово в столбце - PullRequest
3 голосов
/ 27 июня 2019

Я хотел бы переформатировать текстовый файл, содержащий несколько слов за строкой: каждое слово должно быть в отдельной строке, которая начинается с первого слова оригинальной строки.

Исходный текстовый файл выглядит так:

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

На самом деле все слова одинаковы: нет разницы между первым словом строки и остальными, это решение не работает.

Как новичок в 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 Ответ

4 голосов
/ 27 июня 2019

Не могли бы вы попробовать следующее.

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