2015-05-22 7 views
1

Это моя строка.строки фильтра awk по столбцу

2706 abc/efe/efefe/fefe 10143 fefef/dbddf/fvfvdf/vdfvdp 8927 fvdfv/fvdv/fvdfv/fvdfv 11546 fvsddfv/fdfvdv/fvddffv/fvddfv 

ожидается выход

2706 abc/efe/efefe/fefe 
10143 fefef/dbddf/fvfvdf/vdfvdp 
8927 fvdfv/fvdv/fvdfv/fvdfv 
. 
. 
. 
. 
11546 fvsddfv/fdfvdv/fvddffv/fvddfv 
+1

Вы пытались решить эту проблему сам? Что вы пробовали? В чем проблема? – Kevin

ответ

4

если формат вашей строки были фиксированы, вы могли бы дать эту линию попробовать :

cat file|xargs -n2 

Тест с вашим примером:

kent$ cat f 
2706 abc/efe/efefe/fefe 10143 fefef/dbddf/fvfvdf/vdfvdp 8927 fvdfv/fvdv/fvdfv/fvdfv 11546 fvsddfv/fdfvdv/fvddffv/fvddfv 

kent$ cat f|xargs -n2 
2706 abc/efe/efefe/fefe 
10143 fefef/dbddf/fvfvdf/vdfvdp 
8927 fvdfv/fvdv/fvdfv/fvdfv 
11546 fvsddfv/fdfvdv/fvddffv/fvddfv 
+2

' xargs -n2

0

Вставка новой строки после каждой последовательности числа, за которым следует строка не-цифровых символов:

sed 's/\([0-9]* [^0-9]*\) /\1\n/g' input 

или заменить заготовки после нечисловая характер по новой строке:

sed 's/\([^0-9]\) /\1\n/g' input 

Дает:

2706 abc/efe/efefe/fefe 
10143 fefef/dbddf/fvfvdf/vdfvdp 
8927 fvdfv/fvdv/fvdfv/fvdfv 
11546 fvsddfv/fdfvdv/fvddffv/fvddfv 
0

вы могли бы использовать СЭД,

sed 's/[[:blank:]]\+\([0-9]\+\)/\n\1/g' file 

Через Grep,

grep -oP '\d+\s+\S+' file 
+0

несколько более сжатый формат вашего ответа: ** 'sed -r 's/[[: blank:]] ([0-9] +)/\ n \ 1/g' file' ** – slayedbylucifer

+0

@slayedbylucifer sed в mac не будет поддерживать '-r' –

1

С GNU AWK для мульти-гольцов RS: (? Большинство)

$ awk -v RS='\\s' '{ORS=(NR%2?" ":"\n")}1' file 
2706 abc/efe/efefe/fefe 
10143 fefef/dbddf/fvfvdf/vdfvdp 
8927 fvdfv/fvdv/fvdfv/fvdfv 
11546 fvsddfv/fdfvdv/fvddffv/fvddfv 

С некоторыми SEDS:

$ sed -r 's/([^ ]+ +[^ ]+) +/\1\n/g' file 
2706 abc/efe/efefe/fefe 
10143 fefef/dbddf/fvfvdf/vdfvdp 
8927 fvdfv/fvdv/fvdfv/fvdfv 
11546 fvsddfv/fdfvdv/fvddffv/fvddfv