Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Обработка текстовых файлов при помощи awk  (Прочитано 1033 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн llokely

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Имеется куча текстовых файлов вида:
Цитировать
Line1
Text1(больше одной строчки)
Из них требуется сделать один файл вида:
Цитировать
Line1,Text1
Line2,Text2
...
Строки во всех файлах разные как по содержанию, так и по количеству. Как проще сделать такое? Имеются смутные подозрения что это выполняется при помощи awk, но с ним я совсем не знаком еще, только пытаюсь разобраться.

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Обработка текстовых файлов при помощи awk
« Ответ #1 : 05 Декабря 2010, 22:45:11 »
Ну как-то так:
#!/bin/bash
for i in `ls ./`
do
line=`cat ./$i | head -1`
text=`cat ./$i | sed "1d"`

echo "$line,$text">>./file_temp
done

Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн llokely

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Обработка текстовых файлов при помощи awk
« Ответ #2 : 05 Декабря 2010, 23:14:03 »
Такой скрипт работает, только я допустил оплошность: забыл уточнить, что 2 строка и последующие должны преобразоваться в одну строку. А с таким скриптом сохраняется многострочность.

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Обработка текстовых файлов при помощи awk
« Ответ #3 : 06 Декабря 2010, 00:30:57 »
sed-ом замените знак "\n" на пробел, должно работать.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн llokely

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Обработка текстовых файлов при помощи awk
« Ответ #4 : 06 Декабря 2010, 21:12:46 »
Обрабатываю такой sed -e :a -e '$!N;s/\n//;ta' myfile или такой sed -e :a -e '$b;N;s/\n//;ba' myfile командой, но при этом первая строка тоже затрагивается. Можно переправить как-нибудь под работу только со 2 строки?

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: Обработка текстовых файлов при помощи awk
« Ответ #5 : 06 Декабря 2010, 22:36:46 »
#!/bin/bash
for i in `ls ./`
do
line=`cat ./$i | sed q`
text=`cat ./$i | sed "1d" | tr '\n' '%'`

echo "$line,$text">>./file_temp
done

Теперь все знаки "\n" заменяются на "%". Вы можете вставить любой знак или или не вставлять ничего вовсе.
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн llokely

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Обработка текстовых файлов при помощи awk
« Ответ #6 : 06 Декабря 2010, 23:31:14 »
Превосходно! Работает великолепно, как раз то, что и требовалось. Большое спасибо за помощь!

 

Страница сгенерирована за 0.015 секунд. Запросов: 21.