powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Примитивный вопрос по GREP
14 сообщений из 14, страница 1 из 1
Примитивный вопрос по GREP
    #34678756
cooluser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть файл следующего содержания:

param1=value1
param2=value2
...
paramN=valueN

Вопрос следующий, как с помощью грепа по названию параметра выдернуть его значение?

проблем в том, что греп работает в двух режимах:
1) Либо выводит всю строку, которая удовлетворяет регулярному выражению
2) Либо выводит только ту часть строки,которая удовлетворяет регулярному выражению

Оба варианта очевидно не подходят, как быть?
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34678785
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
man sed
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34678798
cooluser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бутылка пива в Новосибирске ждет того, кто приведет конкретный пример команды
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34678860
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
awk -F= ' { gsub(/^[ \t]*/,"",$1);gsub(/[ \t]*$/,"",$1); if ( $1=="param2" ) print $2 }' file.txt

это с отбросом пробелов и табуляций слева и справа в названии параметра ( вдруг ... )
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34678870
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открываем конкурс. Главный приз бутылка пива в Новосибирске

Если использовать sed:

getparam.sh
Код: plaintext
1.
2.
3.
4.
5.
6.
#!/bin/bash

[ "$1" == "" ] && exit

param=$ 1 
sed -n "s/^[[:space:]]*${param}[[:space:]]*=[[:space:]]*//p"

Использовать ./getparam.sh paramname < file
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34678898
Anton Lukyanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanek842
Код: plaintext
1.
awk -F= ' { gsub(/^[ \t]*/,"",$1);gsub(/[ \t]*$/,"",$1); if ( $1=="param2" ) print $2 }' file.txt

это с отбросом пробелов и табуляций слева и справа в названии параметра ( вдруг ... )

кажется ошибка, $2 не определяется
имхо, так правильно
awk -F= ' { gsub(/^[ \t]*/,"",$1);gsub(/[ \t]*$/,"",$2); if ( $1=="param2" ) print $2 }' file.txt
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34678913
Sun_newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:))

С использованием grep:
cat file.txt | grep param1 | awk -F= '{print$2}'
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34678926
sanek842
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anton Lukyanov sanek842
Код: plaintext
1.
awk -F= ' { gsub(/^[ \t]*/,"",$1);gsub(/[ \t]*$/,"",$1); if ( $1=="param2" ) print $2 }' file.txt

это с отбросом пробелов и табуляций слева и справа в названии параметра ( вдруг ... )

кажется ошибка, $2 не определяется
имхо, так правильно
awk -F= ' { gsub(/^[ \t]*/,"",$1);gsub(/[ \t]*$/,"",$2); if ( $1=="param2" ) print $2 }' file.txt

зачем, нам нужно вычленить только название параметра ( это то что до равно ), поставьте перед равно пробел и исправленный пример работать не будет
А в принципе можно даже проще сделать, обычно название параметра не включает в себя пробелы и имеет смысл наверное целиком исключить пробелы в "1-ой колонке", тогда будет так

awk -F= ' { gsub(/[ \t]/,"",$1); if ( $1=="param2" ) print $2 }' file.txt
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34679035
Фотография v6y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sun_newbie:))

С использованием grep:
cat file.txt | grep param1 | awk -F= '{print$2}'

А если файл содержит строки

pparam1 =100
param12 = 1000
param1= 10

?
;-)
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34679921
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooluser wrote:

> как быть?
используйте sed. Должно быть нечто вроде
sed -n 's/^param1=\(.*\)$/\1/p' исходный_файл.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34679923
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooluser wrote:

> Бутылка пива в Новосибирске ждет того, кто приведет конкретный пример
> команды
1) далеко.
2) не люблю пиво.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34681704
Sun_newbie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если файл содержит строки

pparam1 =100
param12 = 1000
param1= 10


Точнее составить регулярное выражение с названием нужного параметра.
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34682364
cat file.txt | grep "^paramname=" | cut -f 2- -d =
...
Рейтинг: 0 / 0
Примитивный вопрос по GREP
    #34682940
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не-даши-без-пароляcat file.txt | grep "^paramname=" | cut -f 2- -d =Я согласен с Арамисом, тут awk нафиг не сдался.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Примитивный вопрос по GREP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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