Bash: получение значений из файла

У меня была та же проблема (12.04)

Использовал Центр программного обеспечения для установки: libreoffice-java-common

Это исправило это для меня.

3
задан 5 April 2018 в 19:42

6 ответов

Если вы хотите извлечь неконтегрированные значения атрибута SEM, вы можете сделать это, используя grep в режиме PCRE:

$ grep -Po '(?<=\[SEM=)[^()]*?(?=\])' file
50
'times'
4

или perl сам

$ perl -lne 'print $1 if /(?<=\[SEM=)([^()]*?)(?=\])/' file
50
'times'
4

Оба подхода используют регулярные выражения.

5
ответ дан 22 May 2018 в 11:35

Если вы хотите извлечь неконтегрированные значения атрибута SEM, вы можете сделать это, используя grep в режиме PCRE:

$ grep -Po '(?<=\[SEM=)[^()]*?(?=\])' file 50 'times' 4

или perl сам

$ perl -lne 'print $1 if /(?<=\[SEM=)([^()]*?)(?=\])/' file 50 'times' 4

Оба подхода используют регулярные выражения.

5
ответ дан 17 July 2018 в 17:25

Если вы хотите извлечь неконтегрированные значения атрибута SEM, вы можете сделать это, используя grep в режиме PCRE:

$ grep -Po '(?<=\[SEM=)[^()]*?(?=\])' file 50 'times' 4

или perl сам

$ perl -lne 'print $1 if /(?<=\[SEM=)([^()]*?)(?=\])/' file 50 'times' 4

Оба подхода используют регулярные выражения.

5
ответ дан 23 July 2018 в 18:14

С помощью нескольких команд модуля re мы можем скомпоновать скрипт Python:

#!/usr/bin/env python3
import sys,re
with open(sys.argv[1]) as fd:
    for line in fd:
        items = re.findall(r'SEM=[^(]+?\]',line)
        for i in items:
            tokens = filter( lambda x: x != 'SEM' and x, re.split('=|]',i)  )
            print("\n".join(tokens))

С вашим данным, который производит:

$ ./get_sem_vals.py ./input.txt
50
'times'
4

I также взял на себя ответственность за учет возможных множественных SEM значений в одной строке. Если мы изменим вашу вторую строку как

 (NUM[SEM=(50, unknown, unknown)] (DIZAINE[SEM=50] cinquante, ATHING=[SEM=25]))

, скрипт выдает следующий вывод:

$ ./get_sem_vals.py ./input.txt
50
25
'times'
4
3
ответ дан 22 May 2018 в 11:35

С помощью нескольких команд модуля re мы можем скомпоновать скрипт Python:

#!/usr/bin/env python3 import sys,re with open(sys.argv[1]) as fd: for line in fd: items = re.findall(r'SEM=[^(]+?\]',line) for i in items: tokens = filter( lambda x: x != 'SEM' and x, re.split('=|]',i) ) print("\n".join(tokens))

С вашим данным, который производит:

$ ./get_sem_vals.py ./input.txt 50 'times' 4

I также взял на себя ответственность за учет возможных множественных SEM значений в одной строке. Если мы изменим вашу вторую строку как

(NUM[SEM=(50, unknown, unknown)] (DIZAINE[SEM=50] cinquante, ATHING=[SEM=25]))

, скрипт выдает следующий вывод:

$ ./get_sem_vals.py ./input.txt 50 25 'times' 4
3
ответ дан 17 July 2018 в 17:25

С помощью нескольких команд модуля re мы можем скомпоновать скрипт Python:

#!/usr/bin/env python3 import sys,re with open(sys.argv[1]) as fd: for line in fd: items = re.findall(r'SEM=[^(]+?\]',line) for i in items: tokens = filter( lambda x: x != 'SEM' and x, re.split('=|]',i) ) print("\n".join(tokens))

С вашим данным, который производит:

$ ./get_sem_vals.py ./input.txt 50 'times' 4

I также взял на себя ответственность за учет возможных множественных SEM значений в одной строке. Если мы изменим вашу вторую строку как

(NUM[SEM=(50, unknown, unknown)] (DIZAINE[SEM=50] cinquante, ATHING=[SEM=25]))

, скрипт выдает следующий вывод:

$ ./get_sem_vals.py ./input.txt 50 25 'times' 4
3
ответ дан 23 July 2018 в 18:14

Другие вопросы по тегам:

Похожие вопросы: