У меня есть переменная с содержимым «eth0 eth1 bond0», есть ли способ использовать sed или аналогичный инструмент для перемещения чего-либо соответствующего bond.*
в начало строки?Sed переместить текст в начало строки?
2
A
ответ
4
не используя ничего, кроме Bash:
$ var="eth0 eth1 bond0"
$ [[ $var =~ (.*)\ (bond.*) ]]
$ var="${BASH_REMATCH[2]} ${BASH_REMATCH[1]}"
$ echo "$var"
bond0 eth0 eth1
Edit:
Эта версия обрабатывает несколько вхождений "связи" в любом месте в пределах строки:
var="eth0 bond0 eth1 bond1 eth2 bond2"
for word in $var
do
if [[ $word =~ bond ]]
then
begin+="$word "
else
end+="$word "
fi
done
var="$begin$end"
var="${var%* }" # if you need to strip the trailing space
echo "$var"
Выход:
bond0 bond1 bond2 eth0 eth1 eth2
Edit 2:
Вот sed
версия, которая является специфической для строки «связь», а затем один или более цифр, а не позволяя любое слово, которое начинается с «Ъ»:
$ echo "eth0 bond0 eth1 bond1 eth2 bond2" |
sed 's/\<bond[[:digit:]]\+/\n&\n/g; s/ //g; :a; s/\(.*\)\n\(bond[[:digit:]]\+\)/\2 \1/;ta; s/\n/ /g'
bond0 bond1 bond2 eth0 eth1 eth2
3
вам можно также использовать AWK
echo "eth0 bond1 eth1 bond0 eth2 bond2" | awk '{
for(i=1;i<=NF;i++)
if($i~/bond/){a[++d]=$i}
else{b[++e]=$i}
}END{
for(i=1;i<=d;i++){
printf a[i]" "
}
for(i=1;i<=e;i++){
printf b[i]" "
}
}'
OUTPUT
$ ./shell.sh
bond1 bond0 bond2 eth0 eth1 eth2
0
Это может работать для вас:
echo "eth0 bond0 eth1 bond1 eth2 bond2" | sed ':a;s/\<\([^b]*\) \(b.*\)/\2 \1/g;ta'
bond0 bond1 bond2 eth0 eth1 eth2
Это работает, перемещая слова не начинаются с элементом b
за словами, которые делают.
Смежные вопросы
- 1. переместить шаблон в начало строки с помощью sed
- 2. Переместить пробелы в начало строки?
- 3. Невозможно переместить текст в начало страницы bootstrap
- 4. Как переместить этот текст в начало страницы
- 5. Sed - Переместить/Вставить текст из буфера удержания
- 6. Переместить курсор в начало текста внутри строки
- 7. Выровнять текст в начало строки
- 8. Использование sed для добавления части строки в начало строки
- 9. Notepad ++ Reg Exp - Переместить конец строки в начало строки
- 10. Добавить текст в начало каждой строки файла
- 11. Как переместить список в начало страницы
- 12. d3Plus переместить легенду в начало
- 13. Переместить поток в начало файла
- 14. Переместить правую колонку в начало
- 15. переместить элемент в начало LinkedList
- 16. Переместить изображение в начало страницы
- 17. Переместить каретку в начало строки в PhpStorm, построенном в терминале
- 18. Как скопировать текст в круглых скобках в начало строки?
- 19. Переместить курсор в начало/конец строки «active» в C
- 20. Regular Expression, чтобы переместить начало строки в конец в блокноте ++
- 21. с помощью sed, вставьте слово в начало определенной строки
- 22. SED: Как вставить строку в начало последней строки
- 23. Переместить курсор в начало поля ввода?
- 24. Sed удалить текст в текст, за исключением последней строки
- 25. Добавить текст в начало новой строки, если текст автоматически обернут
- 26. Попытка переместить слово в конец строки с помощью sed
- 27. Переместить последний символ строки в конкретный столбец - sed? AWK?
- 28. Как перенести некоторые строки в начало файла?
- 29. SED заменить текст и положить конец строки
- 30. SED заменить текст в кавычках
спасибо, полезно использовать оба сценария, один и несколько экземпляров связи. * :) – f10bit