У меня есть строка:

The ID number for product is 721- 971-4321.` 

Я хочу поменять местный код и обменять его на номер внутри, например: 971- 721-4321

Вот что у меня есть:

17s/\([654]\)-\([817]\)/\2-\1/

Таким образом, номер находится в строке 17 в текстовом файле. На линии есть другие вещи, но я хочу только изменить номер.

Всякий раз, когда я запускаю скрипт, ничего не происходит. Любой совет, как это исправить.

sed
1
Ana snow 18 Фев 2020 в 06:38

2 ответа

Лучший ответ

Не могли бы вы попробовать следующее.

sed 's/\([^0-9]*\)\([^-]*\)\([^0-9]*\)\([^-]*\)\(.*\)/\1\4\3\2\5/' Input_file

Объяснение: Я использую здесь возможность обратной ссылки sed здесь. Где с помощью регулярных выражений я создаю 5 временных буферов, а затем обращаюсь к ним в переупорядочении, чтобы сделать вывод согласно запросу OP.

Вывод будет следующим.

The ID number for product is 971- 721-4321.
1
RavinderSingh13 18 Фев 2020 в 06:21

Это может работать для вас (GNU sed):

sed -E 's/([0-9]+-) ([0-9]+-)/\2 \1/' file
0
potong 19 Фев 2020 в 23:58