Сортировка контента по первому полю и вывод второго поля в новый файл - PullRequest
1 голос
/ 02 октября 2010

У меня есть файл, подобный этому:

 3 EOE
 5 APPLE
 6 NOBODY

мне нужно разобрать это и вывести все с '3' в первом столбце в filename.3, '4' в filename.4 и т. Д. ... из приглашения unix

Ответы [ 3 ]

4 голосов
/ 02 октября 2010
awk '{print $2 >> "filename."$1 }' filename

Если вам нужна строка вся :

awk '{print $0 >> "filename."$1 }' filename
4 голосов
/ 02 октября 2010

Что-то вроде этого должно работать (я не проверял это):

while read num rest; do
   echo "$num $rest" >> "filename.$num"
done < inputFile

read прочитает строку текста, а затем разделит ее на пустое пространство на «слова», как, например,запустить команду.Он назначит первое «слово» первому имени переменной (num в данном случае - которое получит число), второе «слово» второму имени переменной (rest) и т. Д.Если в нем заканчиваются переменные, он добавит остаток строки к последней переменной (rest, здесь).

Когда read обрабатывает строку успешно, она возвращает ноль, что является «успехом»в сценариях оболочки, поэтому цикл while будет продолжаться, читая последующие строки.Когда read достигает конца файла, он возвращает 1, останавливая цикл while.

0 голосов
/ 02 октября 2010

используя bash для циклов, вырезания и grep

for i in `cut -s -d ' ' -f 1 input.txt`; do
    grep ^$i input.txt > filename.$i
done;
...