2017-01-19 5 views
1

я могу переместить каждую вторую строку во второй колонке предыдущего ряда по:Перемещение второго столбца каждой строки на новый Следующий Роу

awk '{printf "%s%s",$0,(NR%2?FS:RS)}' file > newfile 

Но я не могу сделать это наоборот. То, что у меня есть, как показано ниже:

1 a 
2 b 
3 c 

Мне нужно

1 
a 
2 
b 
3 
c 

Я проверил несколько похожих-столбец строки сдвигая вопросы, но не мог понять мое дело. Благодаря!

+0

Вы знаете AWK достаточно хорошо, чтобы написать 'AWK«{Printf «% s % s ", $ 0, (NR% 2? FS: RS)} 'файл', но не может понять, что нужно написать' awk' {print $ 1 RS $ 2 } 'файл' вместо ??? Я настоятельно рекомендую вам начать читать книгу «Эффективное программирование Awk», 4-е издание, Арнольдом Роббинсом, чтобы вы получили базовое представление о сценариях, которые люди пишут для вас. –

+0

Я полностью согласен с вами: D like could not agree more! И я уже купил книгу о sed & awk, в моем списке дел среди множества других вещей. Но я не просил сценарий выше, я нашел его в другом посте. Cheers – DragonRider

+0

Бросьте любую книгу, которую вы имеете о sed & awk, так как вам НЕ нужна книга, чтобы изучить единственные конструкции, которые вы должны использовать в sed, s, g и p (с -n), а часть awk этой книги будет отсутствовать от даты и до неполного. Единственная книга, которую каждый должен изучать awk, - это тот, о котором я упоминал. –

ответ

2

вы можете использовать tr

cat file | tr ' ' '\n' 

или sed

sed -r 's/ /\n/g' file 

вы получите,

1 
a 
2 
b 
3 
c 
+4

Потеряйте UUOC: 'tr '' '\ n' <файл' –

3

Вы можете использовать эту команду AWK с OFS='\n', чтобы получить выходной разделитель полей в качестве символа новой строки после заставляя AWK переписать каждую запись с $1=$1 трюком:

awk '{$1=$1} 1' OFS='\n' file 
1 
a 
2 
b 
3 
c 

Вы можете также использовать grep -o:

grep -Eo '\w+' file 
1 
a 
2 
b 
3 
c 
3

Просто используйте xargs с 1-й регистрацией за один раз,

xargs -n1 <file 
1 
a 
2 
b 
3 
c 

С man xargs страницы

-n Макс-арг, --max-арг = макс-Args Использование в большинстве макс-Args аргументы в командной строке. Меньше аргументов max-args будет использоваться, если размер (см. Параметр -s) превышен, если не указан параметр -x, и в этом случае xargs выйдут.