LINUX.ORG.RU

Как из строки вырезать и сохранить часть текста

 , , ,


0

1

Имеется файл со строкой

+INFO: [SELL],ACN: 64,MSS: 210,MMC: 99,LAZ: 25252,MID: 21156,BCIC: 47,RLev: -73d,B1: 28,B2: 28,TQ: 0,TPR: 0

по этому файлу нужно произвести поиск и вырезать часть текста и сохранить каждый параметр в файл

SELL
ACN(плюс значение этого параметра)
и.т.д пробовал string substring выводит найденную строку по первому вхождению. Удалять символы с начала и конца чтобы выделить нужную часть не годится. Буду благодарен за помощь.



Последнее исправление: vovker95 (всего исправлений: 1)

Имеется файл со строкой

Прежде чем что-то сочинять, ты уточни. Этот файл содержит в себе много строчек со строгой структурой как приведённая выше и ничего более? Или в нём встречаются в разных местах строчки с произвольной структурой примерно похожие друг на друга и их надо выцепить? Или файл полностью состоит из мусора и тебе нужна всего лишь одна строка именно с такой структурой? Файл то один или их много и в некоторых может что-то быть ценное для тебя, а в некоторых нет?

justAmoment ★★★★★
()
Ответ на: комментарий от justAmoment

[code]Прежде чем что-то сочинять[/code] что сочинять? Выше все уточнено есть файл со строкой. [code]Или файл полностью состоит из мусора и тебе нужна всего лишь одна строка именно с такой структурой?[/code] четко написал что нужно каждый параметр с его значением записать в отдельный файл

vovker95
() автор топика
Ответ на: комментарий от vovker95
driver@work:/tmp$ cat test 
+INFO: [SELL],ACN: 64,MSS: 210,MMC: 99,LAZ: 25252,MID: 21156,BCIC: 47,RLev: -73d,B1: 28,B2: 28,TQ: 0,TPR: 0
driver@work:/tmp$ awk -F ',' '{for (i = 1; i < 12; i++){print $i}}' test
+INFO: [SELL]
ACN: 64
MSS: 210
MMC: 99
LAZ: 25252
MID: 21156
BCIC: 47
RLev: -73d
B1: 28
B2: 28
TQ: 0



что-то подобное нужно?

Suicide_inc ★★
()
Ответ на: комментарий от Suicide_inc

Человеческое тебе дружище выручил меня.

vovker95
() автор топика
Ответ на: комментарий от vovker95

$ echo «+INFO: [SELL],ACN: 64,MSS: 210,MMC: 99,LAZ: 25252,MID: 21156,BCIC: 47,RLev: -73d,B1: 28,B2: 28,TQ: 0,TPR: 0» | tr ',' '\n'
+INFO: [SELL]
ACN: 64
MSS: 210
MMC: 99
LAZ: 25252
MID: 21156
BCIC: 47
RLev: -73d
B1: 28
B2: 28
TQ: 0
TPR: 0

Если тебе надо просто по запятым разделить на строки, то с tr будет попроще.

imul ★★★★★
()
Ответ на: комментарий от imul

то с tr будет попроще.

Чего там проще? Проще когда можно потом выбрать нужные поля. Как ТС хотел, вот для INFO и ACN

awk -v RS=',|\n' -v FS=': ' '$1=="+INFO"||$1=="ACN" {print $1 "=" $2}'

vodz ★★★★★
()
Ответ на: комментарий от imul

Ты всегда читаешь только 5 слов из предложения?

В отличии от многих, я таки прочитал стартовую месагу да и стараюсь дать универсальное решение, которое и похожих/других случаях пригодиться. Да, понять его не просто, но судя по всему ему надо вначале отрезать +INFO: [SELL]. Так что ваш tr никак не годиться.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Да, но автору ранее дали вариант где ничего не отрезано и он сказал, что это то что ему нужно. И после этого только я дал вариант с tr. При этом пояснив, в каком случае его уместно применить. Кстати, тебе лучше было отвечать автору. Похоже он забил на тему, а так хотя бы увидел написанное тобой. Но, вместо этого ты решил повыделываться передо мной. Зачем?

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от imul

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

Ваше пояснение неправильное. tr перекодирует символы. То что в результате может получиться разбиение на строки — дурацкий фокус, который ломается от любого чиха, приводящий к даже невидимым проблемам, типа пробела перед разделителем. А уж о универсальности и удобности в применении и вообще речи нет.

Кстати, тебе лучше было отвечать автору.

Я отвечал на ваш пример. Так что не стоит вам говорить другим что делать не по делу.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.