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

Исходное сообщение
"оставить первые 10 символов в строке, остальные удалить"

Отправлено nastr , 23-Фев-09 13:53 
Есть файл со столбцами, разделёнными ":" (двоеточием) нужно что бы в определённо столбце было 10 символов, то есть оставить первые 10, остальные удалить.
Пытался реализовать по средствам awk, не вышло.
grep error#: CHRIS_02230806.txt | gawk -F":" '{printf "s\n", $2}'
какие есть соображения, как это реализовать?

Содержание

Сообщения в этом обсуждении
"оставить первые 10 символов в строке, остальные удалить"
Отправлено gaa , 23-Фев-09 15:40 
В awk есть функция substr как раз для того, чтобы выделять подстроку.

Или же можно сделать что-нибудь вроде замены s/([^:]{10})[^:]*:/\1/, ну и отдельно обработать последний столбец


"оставить первые 10 символов в строке, остальные удалить"
Отправлено LHC , 23-Фев-09 15:53 
>Есть файл со столбцами, разделёнными ":" (двоеточием) нужно что бы в определённо
>столбце было 10 символов, то есть оставить первые 10, остальные удалить.
>
>Пытался реализовать по средствам awk, не вышло.
>grep error#: CHRIS_02230806.txt | gawk -F":" '{printf "s\n", $2}'
>какие есть соображения, как это реализовать?

Стоит попробовать sed:
http://www.student.northpark.edu/pemente/sed/sedfaq4.html#s4.12


"оставить первые 10 символов в строке, остальные удалить"
Отправлено ACCA , 23-Фев-09 22:24 
для bash:

IFS=':'
grep error#: CHRIS_02230806.txt | while read c1 c2 c3 rest_of_them
do
    echo ${c2:0:10}
done


"оставить первые 10 символов в строке, остальные удалить"
Отправлено AMDmi3 , 25-Фев-09 22:10 
>Есть файл со столбцами, разделёнными ":" (двоеточием) нужно что бы в определённо
>столбце было 10 символов, то есть оставить первые 10, остальные удалить.
>
>Пытался реализовать по средствам awk, не вышло.
>grep error#: CHRIS_02230806.txt | gawk -F":" '{printf "s\n", $2}'
>какие есть соображения, как это реализовать?

В awk есть substr.
awk -v OFS=: -F: '{$2=substr($2,0,10); print}'