LINUX.ORG.RU

Разобрать текстовую строку определенным образом.

 , ,


0

3

Всем привет. Нужно разобрать тестовую строку по полям таким образом, чтобы учитывать группировку с помощью парных символов. Пример:

[user@host ~]$ cat testtext
"one two" three 'four five'
[user@host ~]$ cut -d' ' -f1,3 testtext
"one three

Нужно, чтобы текст, заключенный в парные символы (в данном случае кавычки) считался как одно поле, т.е пробелы в таком тексте не учитывались при разборе. То есть на команду вывести первое и третье поле должен быть вывод:

"one two" 'four five'



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

Ответ на: комментарий от anonymous
eval "set `cat testtext`"
echo $1
echo $2
echo $3

Но это, конечно, уродство.

anonymous
()

Вообще в питоне есть такой модуль https://docs.python.org/2/library/shlex.html

import shlex
shlex.split('"test test" test')
#['test test', 'test']

s = open('testtext').read()
print shlex.split(s)[0]
print shlex.split(s)[1]
print shlex.split(s)[2]

pawnhearts ★★★★★
()

Криво-косо, но работает:

$ cat testtest
zero "one two" three 'four five' "six seven" eight 'nine ten' eleven
$ sed "s,',\",g;s,[^\"]*\",,;s,\"[^\"]*\", -- ,g;s,\".*,," testtest
one two -- four five -- six seven -- nine ten

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