LINUX.ORG.RU

Подскажите самый простой способ распарсить файл содержащий данные строки

 , ,


0

1

Требуется распарсить файл и получить значения в первых фигурных скобках:

Содержимое файла
11:[1a] 11:[11]
22:[2a] 22:[22]
...

Результат:
1a
2a

PS: Не силен(но думаю разберусь) я при работе с awk/sed/cut поэтому спрашиваю здесь..

Немного подумал и придумал вот такой костыль)

cut -d":" -f2 | cut -d"[" -f2 | cut -d"]" -f1

Но буду рад более элегантному решению )


Всем спасибо) Скажите а как проще сделать если требуется получить т.е продублировать каждое значение и вставить между ними разделитель…)

1a:1a
1b:1b
...

я не умею в элегантные, только в страшные

grep -Po '^[^\[]*\[\K[^\]]+' /tmp/file

или

grep -Po '^[^\[]*\[\K..' /tmp/file

если символа в скобках точно 2

anonymous ()
Ответ на: комментарий от AnDoR

2

Спасибо! Скажите а как проще сделать если требуется получить т.е продублировать каждое значение и вставить между ними разделитель…)

1a:1a
1b:1b
...
Hex-Value ()
Последнее исправление: Hex-Value (всего исправлений: 1)
Ответ на: 2 от Hex-Value

почитай про интерполяцию переменных в shell-скриптах

если кратко, то вот это "$a" (в скрипте с while) означает, что надо подставить значение переменной ‘a’ в то место в строке, где она указана. Надо подставить несколько раз — указывай $a в строке несколько раз, надо поставить между ними разделитель — поставь.

PS: писал бы ты задачу целиком сразу

xgatron ()
Ответ на: комментарий от anonymous

Входная строка не соответствует примеру ТС

Тогда строка не должна приниматься, должна пропускаться.

А в оригинале так:

получить значения в первых фигурных скобках

anonymous ()