Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / помоги с регулярным выражением / 6 сообщений из 6, страница 1 из 1
06.10.2006, 11:37
    #34037025
salexa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помоги с регулярным выражением
Нужно в gawk разобрать в массив строчку:
"Jan 3, 2003,4:01:42 PM,4444,5555,aga,bugaga,43523343,""super"""
причем Jan 3, 2003,4:01:42 PM - один элемент массива
остальные элементы разделены ","
...
Рейтинг: 0 / 0
06.10.2006, 12:18
    #34037189
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помоги с регулярным выражением
примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
BEGIN {FS=","}
{
 i =  1 
 a[i]=$ 1 ","$ 2 ","$ 3 
 j= 4 
 while (j <= NF){
   i=i+ 1 
   a[i]=$j
   j=j+ 1 
 }#while
}
...
Рейтинг: 0 / 0
06.10.2006, 12:27
    #34037224
salexa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помоги с регулярным выражением
Спасибо, так же сделал=) думал можно как-то похитрее=)
...
Рейтинг: 0 / 0
06.10.2006, 15:59
    #34038241
salexa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помоги с регулярным выражением
Раз уж начал по awk тут, то и продолжу.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
# " хрень, берем кавычку
{
# Список использованных переменных
FileIn = ARGV[1] # вынимаем из командной строки входной файл
FileOut = ARGV[2] # вынимаем из командной строки выходной файл
FileErr = ARGV[3] # файл с ошибочными строками
# пропускаем 7 строк
for ( i=1; i<=7; i++ )  {getline  < FileIn}
# array - массив
sep="|" # разделитель в формате
getline StrComp < "test.awk" # хрень
# перебираем строки
while ( ( getline Str < FileIn ) > 0 ){
  # if ( substr(Str,1,1) == """"){  # смотри первую строку=((
  if ((substr(Str,1,1) == (substr(StrComp,3,1))) && (substr(Str,1,9) != """ , , , ,")){ 
    split(Str,array, ",")
    StrOut=substr(array[1],2) array[2] " " array[ 3 ] sep array[ 4 ] sep array[ 5 ] sep array[ 6 ] sep array[ 7 ] sep array[ 8 ]
    print StrOut > FileOut
  }
  else  {Str > FileErr}
}
}
Вопрос 1: как сравнить кавычки (см. хрень)
Вопрос 2: как положить все остальные строчки в файл FileErr, запуская gawk так: gawk -f test.awk test.csv test2.txt test2.err при этом test2.err остается пустым
...
Рейтинг: 0 / 0
06.10.2006, 17:13
    #34038566
--null--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помоги с регулярным выражением
если правильно понял вопрос

сравнивать кавычки так

if(var == "\"") {...}


в
else {Str > FileErr}
забыли print

else {print Str > FileErr}
...
Рейтинг: 0 / 0
06.10.2006, 17:43
    #34038660
salexa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помоги с регулярным выражением
Большео спасибо! все работает=)
c принтом действительно затупил, спать пора ложиться
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / помоги с регулярным выражением / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]