bash: заменить строку, найденную внутри фигурных скобок - PullRequest
0 голосов
/ 15 апреля 2020

, пожалуйста, помогите. Я пытаюсь найти способы удаления всех чисел в фигурных скобках, кроме первого, из файла.

cat file:

option: {999}
apple: {111 222 333}
selenium: {097 083 083}

ожидаем вывод file:

option: 999
apple: 111
selenium: 097

в ожидаемом файле, все числа, найденные в {} фигурных скобках, будут удалены, кроме первого номера, а также фигурные скобки были удалены.

Я уже пробовал несколько параметры, использующие sed, но они не работают.

Благодарим Вас за помощь в решении этой проблемы. так как я новичок в bash / linux.

спасибо.

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

попробуйте

sed -r 's/(.*)\{([^[:space:]]+).*\}/\1\2/g'
0 голосов
/ 15 апреля 2020

Использование sed

sed 's#[0-9][0-9][0-9]##2g' < input file |  tr -d '{}'

Демонстрация:

$cat file.txt 
option: {999}
apple: {111 222 333}
selenium: {097 083 083}
$sed 's#[0-9][0-9][0-9]##2g' < file.txt |  tr -d '{}'
option: 999
apple: 111  
selenium: 097  
$

Объяснение:

[0-9][0-9][0-9] <- 3 цифры <br>2g <- Означает все вхождения со 2-го вхождения шаблона <br>tr -d '{}' <- Удалить символ и <code>{ или }

...