The UNIX and Linux Forums  


Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
вставить несколько строк в файл c0mrade Shell программирование и сценарии 12 09-04-2008 05:04 PM
Добавление нескольких строк на несколько файлов dayinthelife Shell программирование и сценарии 2 06-04-2008 12:50 PM
Как скопировать несколько строк из файла на другой с использованием AWK? Jisha Shell программирование и сценарии 3 01-08-2008 01:04 AM
Необходимо удалить несколько строк в файл. kangdom Shell программирование и сценарии 6 10-16-2006 12:02 PM
Добавить несколько строк в существующий файл hkhan12 Shell программирование и сценарии 5 09-08-2006 12:11 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 02-13-2008
Дали dala is offline
Зарегистрированный пользователь
  
 

Регистрация: Февраль 2008
Сообщений: 7
получить несколько линий в нескольких местах в файле

У меня есть файл, содержащий следующие строки:

Первая строка
Вторая линия
Третья строка
Здесь-то идет
то еще здесь
Здесь-то идет
первый LINE1
Вторая line2
третий Line3

Мне нужно пройти через этот файл, и получить эти строки и печатать их на выходе должна выглядеть так:

Первая строка
Вторая линия
Третья строка
первый LINE1
Вторая line2
третий Line3

Пожалуйста, помогите мне получить запустить его. Я в то время как цикл производства, но не то, что я хочу его.
Old 02-13-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Модератор Ала режим
  
 

Регистрация: Февраль 2007
Место проведения: Инсбрук, Австрия
Сообщений: 1886
Как вы знаете, какие строки вы хотите, и которых вы не?

Допустим, Вы хотите 3 линии, пропустить 3 линий и т.д. Вот только один способ (с использованием GNU AWK):


Код:
 awk '(int((FNR-1)/ 3))%2 == 0'  filename

Old 02-14-2008
Дали dala is offline
Зарегистрированный пользователь
  
 

Регистрация: Февраль 2008
Сообщений: 7
Цитата:
Первоначально Послано otheus View Post
Как вы знаете, какие строки вы хотите, и которых вы не?

Допустим, Вы хотите 3 линии, пропустить 3 линий и т.д. Вот только один способ (с использованием GNU AWK):


Код:
 awk '(int((FNR-1)/ 3))%2 == 0'  filename
Thx otheus, чтобы ответить на ваш вопрос, я использую `grep" ^ первый "`, когда я нашел ее, я бы продолжать и в grep "^ второе слово и так далее.
Old 02-14-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Модератор Ала режим
  
 

Регистрация: Февраль 2007
Место проведения: Инсбрук, Австрия
Сообщений: 1886
Цитата:
Первоначально Послано Дали View Post
Thx otheus, чтобы ответить на ваш вопрос, я использую `grep" ^ первый "`, когда я нашел ее, я бы продолжать и в grep "^ второе слово и так далее.
Хорошо, так что вы можете использовать "egrep" для более интересным регулярного выражения:


Код:
egrep "^(first|second|third) " infile.txt

Если это не помогает, просто использовать AWK с почти идентичным синтаксисом:


Код:
awk "/^(first|second|third) /" infile.txt

Old 02-14-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Sep 2006
Сообщения: 2554
Цитата:
Первоначально Послано Дали View Post
Пожалуйста, помогите мне получить запустить его. Я в то время как цикл производства, но не то, что я хочу его.

Код:
while  read -r line
do
    case $line in
        first*|second*|third* ) echo "$line";;
    esac 
done < "file"

Old 02-14-2008
otheus's Avatar
otheus otheus is offline Forum Staff  
Модератор Ала режим
  
 

Регистрация: Февраль 2007
Место проведения: Инсбрук, Австрия
Сообщений: 1886
Цитата:
Первоначально Послано ghostdog74 View Post
Код:
while  read -r line
do
    case $line in
        first*|second*|third* ) echo "$line";;
    esac 
done < "file"
Это выглядит как оно должно работать, хотя, как я уже сказал, grep / AWK решение было бы более эффективным. Может быть, вы должны поместить двойные кавычки вокруг $ линию, как в:

Код:
case "$line" in

В KSH и Bash, вы также можете разобрать из первых слов от остальных:

Код:
case "${line%% *}" in
   first|second|third) echo "$line";;
esac

Old 02-14-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Sep 2006
Сообщения: 2554
Цитата:
Первоначально Послано otheus View Post
В KSH и Bash, вы также можете разобрать из первых слов от остальных:

Код:
case "${line%% *}" in
   first|second|third) echo "$line";;
esac

Код:
while read -r a b
do
 case $a in 
  ....
 esac
done

Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 02:28 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0