URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 86167
[ Назад ]

Исходное сообщение
"Вопрос по sh"

Отправлено artemrts , 03-Авг-09 10:53 

  Подскажите, кто знает, можно-ли на sh выполнить следующее:

  Ммеется файл с таким содержанием

   123.234.345.456         4234724
   111.222.333.444         4354353

  Теперь вопрос, как можно записать в скрипт выборку только второго столбца в каждой строке?


Содержание

Сообщения в этом обсуждении
"Вопрос по sh"
Отправлено Roman , 03-Авг-09 11:27 
>[оверквотинг удален]
>
>  Ммеется файл с таким содержанием
>
>   123.234.345.456        
>4234724
>   111.222.333.444        
>4354353
>
>  Теперь вопрос, как можно записать в скрипт выборку только второго
>столбца в каждой строке?

awk



"Вопрос по sh"
Отправлено Didko , 03-Авг-09 11:38 
>[оверквотинг удален]
>
>  Ммеется файл с таким содержанием
>
>   123.234.345.456        
>4234724
>   111.222.333.444        
>4354353
>
>  Теперь вопрос, как можно записать в скрипт выборку только второго
>столбца в каждой строке?

man cut,
в вашем случае cat 123 | cut -d" " -f10
но лучше конечно awk.


"Вопрос по sh"
Отправлено artemrts , 03-Авг-09 12:05 
>[оверквотинг удален]
>>4234724
>>   111.222.333.444        
>>4354353
>>
>>  Теперь вопрос, как можно записать в скрипт выборку только второго
>>столбца в каждой строке?
>
>man cut,
>в вашем случае cat 123 | cut -d" " -f10
>но лучше конечно awk.

Сенкс. Будем читать...


"Вопрос по sh"
Отправлено gennadys , 03-Авг-09 14:46 
>[оверквотинг удален]
>>4234724
>>   111.222.333.444        
>>4354353
>>
>>  Теперь вопрос, как можно записать в скрипт выборку только второго
>>столбца в каждой строке?
>
>man cut,
>в вашем случае cat 123 | cut -d" " -f10
>но лучше конечно awk.

Чем лучше?

cut -d" " -f10 123


"Вопрос по sh"
Отправлено artemrts , 03-Авг-09 16:05 
>[оверквотинг удален]
>>>  Теперь вопрос, как можно записать в скрипт выборку только второго
>>>столбца в каждой строке?
>>
>>man cut,
>>в вашем случае cat 123 | cut -d" " -f10
>>но лучше конечно awk.
>
>Чем лучше?
>
>cut -d" " -f10 123

Хорошо, а если содержание первого слова в строке заведомо неизвестно, то 123 не прокатит?


"Вопрос по sh"
Отправлено artemrts , 03-Авг-09 16:14 
>[оверквотинг удален]
>>>  Теперь вопрос, как можно записать в скрипт выборку только второго
>>>столбца в каждой строке?
>>
>>man cut,
>>в вашем случае cat 123 | cut -d" " -f10
>>но лучше конечно awk.
>
>Чем лучше?
>
>cut -d" " -f10 123

Не, так не прокатит.
Вот почему. Предположим
111.222.333.444 ааа
то команда
cut -d" " -f2 123
выдаст ааа. Тут все ок.
Но если будет число вида 111.222.333.44 (афпи, например)
то так уже не получится ибо будет уже 2 пробела.ъ
В таком случае надо писать cut -d" " -f3 123. Вобщем так неподходит.

Вобщем, кто знает как правильно записать на awk, помогите плиз. Чето никак не разберусь.


"Вопрос по sh"
Отправлено Roman , 03-Авг-09 16:42 
cat test | awk '{print $2}'


test - файл соответсвенно


"Вопрос по sh"
Отправлено artemrts , 03-Авг-09 17:29 
>cat test | awk '{print $2}'
>
>
>test - файл соответсвенно

Оо. Отлично.

Впринципе скриптик работает как надо

#!/bin/sh
cat test | awk '{print $2}' | head -n 1

выводит на экран второе слово в первой строке.

Как можно указать номер строки без применения head. А средствами awk??


"Вопрос по sh"
Отправлено сабакка , 04-Авг-09 00:39 
awk 'NR==2 {print $2}'

"Вопрос по sh"
Отправлено сабакка , 03-Авг-09 16:42 
awk '{print $2}'