The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Выборка после ключевого элемента в списке"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Выборка после ключевого элемента в списке"  +/
Сообщение от universite email(ok) on 29-Сен-13, 01:12 

Есть список, отсортированных по алфавиту, имен.
Нужно отобразить список с начала списка и до определенного имени.
Нужно отобразить список начиная с определенного имени и до конца.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Выборка после ключевого элемента в списке"  +/
Сообщение от skb7 (ok) on 29-Сен-13, 02:03 
> Есть список, отсортированных по алфавиту, имен.
> Нужно отобразить список с начала списка и до определенного имени.
> Нужно отобразить список начиная с определенного имени и до конца.

Отсюда:
http://stackoverflow.com/questions/7103531/how-to-get-the-pa...

1. С начала и до определенного имени (включительно):


sed -n -e '1,/Vasiliy/p' filename.txt


2. С начала и до определенного имени (не включая это имя):


sed -e '/Vasiliy/,$d' filename.txt


3. С определенного имени (включительно) и до конца:


sed -n -e '/Vasiliy/,$p' filename.txt


4. С определенного имени (не включая это имя) и до конца:


sed -e '1,/Vasiliy/d' filename.txt

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Выборка после ключевого элемента в списке"  +/
Сообщение от universite email(ok) on 29-Сен-13, 02:09 
>> Есть список, отсортированных по алфавиту, имен.
>> Нужно отобразить список с начала списка и до определенного имени.
>> Нужно отобразить список начиная с определенного имени и до конца.
> Отсюда:
> http://stackoverflow.com/questions/7103531/how-to-get-the-pa...

О, годные ответы.

Но!


#ls

формирует список с разделителем табулятор.

А,


#ls | sed -n -e '1,/hack/p'

формирует список с разделителем конец строки...


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Выборка после ключевого элемента в списке"  +/
Сообщение от skb7 (ok) on 29-Сен-13, 03:20 
>[оверквотинг удален]
>> http://stackoverflow.com/questions/7103531/how-to-get-the-pa...
> О, годные ответы.
> Но!
 
> #ls
>

> формирует список с разделителем табулятор.
> А,
 
> #ls | sed -n -e '1,/hack/p'
>

> формирует список с разделителем конец строки...

По вашему вопросу было непонятно, что это список имен файлов. То что я предположил -- что это список имен людей, находящихся в одном файле.

Если задача в том, чтобы отформатировать список файлов, то приведенное выше решение тоже подходит. Проблема с выводом "ls" решается так:


ls -1 | sed -n -e '1,/hack/p'


при чем аргумент "ls" это "1" (единица), а не "l" (эл).

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Выборка после ключевого элемента в списке"  +/
Сообщение от universite email(ok) on 29-Сен-13, 19:30 

> Если задача в том, чтобы отформатировать список файлов, то приведенное выше решение
> тоже подходит. Проблема с выводом "ls" решается так:
>

 
> ls -1 | sed -n -e '1,/hack/p'
>

> при чем аргумент "ls" это "1" (единица), а не "l" (эл).

Не работает. Уточните свой uname -a.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Выборка после ключевого элемента в списке"  +/
Сообщение от skb7 (ok) on 29-Сен-13, 19:52 
>> Если задача в том, чтобы отформатировать список файлов, то приведенное выше решение
>> тоже подходит. Проблема с выводом "ls" решается так:
>>
 
>> ls -1 | sed -n -e '1,/hack/p'
>>

>> при чем аргумент "ls" это "1" (единица), а не "l" (эл).
> Не работает. Уточните свой uname -a.


Linux joe-pc 3.10-2-amd64 #1 SMP Debian 3.10.7-1 (2013-08-17) x86_64 GNU/Linux


не думаю, что версия ядра тут как-то могла повлиять.

Вот пример моего вывода:


$ cd /sys
$ ls -1 | sed -n -e '1,/kernel/p'

выводит все имена до "kernel":


block
bus
class
dev
devices
firmware
fs
hypervisor
kernel


Проверьте у себя этот пример для начала.

Суть в том, что вам нужно вывести все имена файлов в столбик. Проверьте просто команду "ls -1".
Из "man ls":


-1     list one file per line


Если у вас по какой-то причине не работает "ls -1", попробуйте так:


$ ls | sed 's/\t/\n/g'


но это некрасивое решение.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Выборка после ключевого элемента в списке"  +/
Сообщение от universite email(ok) on 29-Сен-13, 20:29 
>[оверквотинг удален]
> bus
> class
> dev
> devices
> firmware
> fs
> hypervisor
> kernel
>
> Проверьте у себя этот пример для начала.

Мне желательно сделать вывод в одно строку, но с разделителем табулятор.
Вывод "list one file per line" ломает немного логику цикла, его нужно будет переделать

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Выборка после ключевого элемента в списке"  +/
Сообщение от skb7 (ok) on 29-Сен-13, 22:09 
>[оверквотинг удален]
>> devices
>> firmware
>> fs
>> hypervisor
>> kernel
>>
>> Проверьте у себя этот пример для начала.
> Мне желательно сделать вывод в одно строку, но с разделителем табулятор.
> Вывод "list one file per line" ломает немного логику цикла, его нужно
> будет переделать

Тогда можно просто в полученном выводе, содержащем перенос строки в качестве разделителя, заменить этот разделитель на табуляцию с помощью команды

tr '\n' '\t'

Например так (выполнять в каталоге /sys):


ls -1 | sed -n -e '1,/kernel/p' | tr '\n' '\t'


Надо заметить, что такая команда заменяет также последний перенос строки, и приглашение ввода будет начинаться на результирующей строке. Чтобы избежать этого, можно просто выполнить echo:


ls -1 | sed -n -e '1,/kernel/p' | tr '\n' '\t' ; echo


Таким образом, все команды из моего первого сообщения всё еще применимы для вашего случая, просто нужно производить вывод файлов с переносом строки после каждого файла (ls -1), и после выборки приводить форматирование текста в нужный вам вид (например как показано выше с помощью команды tr).

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Выборка после ключевого элемента в списке"  +/
Сообщение от universite email(ok) on 30-Сен-13, 01:22 

>[оверквотинг удален]
>
 
> ls -1 | sed -n -e '1,/kernel/p' | tr '\n' '\t'
>

> Надо заметить, что такая команда заменяет также последний перенос строки, и приглашение
> ввода будет начинаться на результирующей строке. Чтобы избежать этого, можно просто
> выполнить echo:
>
 
> ls -1 | sed -n -e '1,/kernel/p' | tr '\n' '\t' ;
> echo
>

Благодарю. После восстановления дискового массива я применю скрипт и отпишусь.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Выборка после ключевого элемента в списке"  +/
Сообщение от universite email(ok) on 11-Окт-13, 14:08 
>> Есть список, отсортированных по алфавиту, имен.
>> Нужно отобразить список с начала списка и до определенного имени.
>> Нужно отобразить список начиная с определенного имени и до конца.
> Отсюда:
> http://stackoverflow.com/questions/7103531/how-to-get-the-pa...
> 1. С начала и до определенного имени (включительно):
>
 
> sed -n -e '1,/Vasiliy/p' filename.txt
>

Еще надо:
5. С начала и до определенного имени (включительно) + N следующих строк:

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

10. "Выборка после ключевого элемента в списке"  +/
Сообщение от universite email(ok) on 11-Окт-13, 14:13 
>> Есть список, отсортированных по алфавиту, имен.
>> Нужно отобразить список с начала списка и до определенного имени.
>> Нужно отобразить список начиная с определенного имени и до конца.
> Отсюда:
> http://stackoverflow.com/questions/7103531/how-to-get-the-pa...
> 1. С начала и до определенного имени (включительно):
>
 
> sed -n -e '1,/Vasiliy/p' filename.txt
>

Не корректно работает.
Идет построчное дублирование.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру