Shell-Script
將 <1> 更改為 _1
我需要改變類似的東西
<1> to _1 <21> to _21
有沒有一種方法可以使用 sed、awk 或 vi 自動執行此操作?
注意:尖括號內的數字各不相同。
與
sed
:sed 's/<\([0-9]*\)>/_\1/g'
在問題中的範例上執行它會產生
_1 to _1 _21 to _21
該模式
<\([0-9]*\)>
匹配內部任意數量的數字<...>
。替換文本用<...>
前綴為 的數字(如果有的話)替換這一位輸入_
。在六中:
:%s/<\([0-9]*\)>/_\1/g
sed
由於明顯的歷史原因,這相當於解決方案。如果你在 Bash
<21>
的 shell 變數中有字元串:var
printf '%s\n' "_${var//[<>]/}"
_21
這將使用變數替換列印${parameter//pattern/string}
。與
tr
. 注意:這看起來像是在處理非常有限的一組輸入。它盲目地替換<
和_
刪除>
,而不考慮它們發生的位置:tr '<' '_' <file.in | tr -d '>'
這更像是一個玩笑的解決方案,而不是任何嚴肅的解決方案,但如果輸入中出現的唯一和是介於兩者之間的數字,那麼它將起作用。
<``>