我有一個變量的內容「eth0 eth1 bond0」,有沒有一種方法使用sed或類似的工具來移動任何匹配bond.*
到行的開頭的東西?Sed將文本移至行首?
2
A
回答
4
使用無非擊:
$ var="eth0 eth1 bond0"
$ [[ $var =~ (.*)\ (bond.*) ]]
$ var="${BASH_REMATCH[2]} ${BASH_REMATCH[1]}"
$ echo "$var"
bond0 eth0 eth1
編輯:
這個版本處理 「保函」 的字符串中的任意位置多次出現:
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
編輯2:
這裏是一個sed
版本是特定的字符串「債券」後面跟着一個或多個數字,而不是允許以「B」開頭的單詞:
$ 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]" "
}
}'
輸出
$ ./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
begining那些文字背後。
相關問題
- 1. SED將文字移至下一行
- 2. 將行的最後一個字符移至特定列 - sed? AWK?
- 3. 將焦點移至文本框在GOJS
- 4. 將以#開始的行移動到下一行的末尾。首選AWK或SED
- 5. 將文本字段溢出至多行
- 6. 移行至左
- 7. 將所有行移至第一個行
- 8. 使用sed在xml上移動文本
- 9. 移動文本使用的sed
- 10. 使用按鈕將文本從文本字段移至文本區
- 11. bash sed如何追加到行首,匹配變量在行首
- 12. 將舊項目移至新版本
- 13. 將TFS2010移至域
- 14. SplFileObject將指針移至上一行
- 15. Perl - 將指針移動到行首
- 16. 創建和刪除文件夾。將文件移至文件夾並將文件移至文件夾以外
- 17. Google表單將行移至新工作表的腳本
- 18. 將SOLR中的文檔移至elasticsearch
- 19. 將內嵌javascript移至外部文件
- 20. 將Yii2 Admin移至擴展文件夾
- 21. 將文字右移至圖像
- 22. 將光標移至文件開頭?
- 23. 將搜索圖像移至文本框右側?
- 24. 如何將文本中的數字移至數字?
- 25. 如何將twitter bootstrap導航欄中的文本移至中心?
- 26. sed的首次出現的文本替換
- 27. sed命令將文本行添加到文件的最末尾
- 28. 無法將文本移動到頁首bootstrap
- 29. 如何將Zepplin筆記本從舊版本移至新版本?
- 30. 將jquery項目移至Magento
謝謝你,這兩種情況都涵蓋了,單個和多個債券實例很有用。* :) – f10bit 2010-01-02 12:43:01