Это результат, который у меня есть сейчас. Как я могу получить от Input to Output?
Вход:
1.2.3.4.5
2.3.4.5.6
Выход:
1.2.3.4-5
2.3.4.5-6
Бонус: I имеют другие 80% скрипта, но это мой идеальный выход.
Вход:
1.2.3.4-1.2.3.10
Выход:
1.2.3.4-10
С awk:
awk -F '[-.]' '{printf "%s.%s.%s.%s-%s\n", $1, $2, $3, $4, $NF}'
Так как вы хотите, чтобы поля 1-4 и последнее поле были введены с помощью . или -, а выход, отформатированный с помощью все, кроме последнего поля, разделенного ..
Более кратко:
awk -F '[-.]' -v OFS=. '{$4 = $4"-"$NF; NF=4}1'
Добавить последнее поле в четвертое поле и установить количество полей в 4. Первая часть:
$ sed 's/\./-/4' file.txt
Что заменяет четвертое вхождение . на -.
Для вашего раздела бонусов:
sed -r 's/(.*)-.*\.(.*)$/\1-\2/' file.txt
ввод:
1.2.3.4-1.2.3.10
мощность:
1.2.3.4-10
С awk:
awk -F '[-.]' '{printf "%s.%s.%s.%s-%s\n", $1, $2, $3, $4, $NF}'
Так как вы хотите, чтобы поля 1-4 и последнее поле были введены с помощью . или -, а выход, отформатированный с помощью все, кроме последнего поля, разделенного ..
Более кратко:
awk -F '[-.]' -v OFS=. '{$4 = $4"-"$NF; NF=4}1'
Добавить последнее поле в четвертое поле и установить количество полей в 4. Первая часть:
$ sed 's/\./-/4' file.txt
Что заменяет четвертое вхождение . на -.
Для вашего раздела бонусов:
sed -r 's/(.*)-.*\.(.*)$/\1-\2/' file.txt
ввод:
1.2.3.4-1.2.3.10
мощность:
1.2.3.4-10
Мы можем использовать группировку с жадным совпадением с sed следующим образом:
$ sed -r 's/(.*)\.(.*)$/\1-\2/' input.txt
1.2.3.4-5
2.3.4.5-6
То же самое для perl:
$ perl -pe's/(.*)\.(.*)$/\1-\2/' input.txt
1.2.3.4-5
2.3.4.5-6
Но мы можем играть с . как разделитель столбцов в awk:
$ awk -F '.' 'BEGIN{OFS=FS}{$NF=-$NF;sub(/\.-/,"-");print}' input.txt
1.2.3.4-5
2.3.4.5-6