我一直在使用sed
作爲文本處理和清理的一部分。其中一個文本更改要求我用數字(不包含空格)替換方括號中的數字。這裏是一個例子:在配置變量時,sed的放置模式停止工作
a[1]
會變成a1
。因爲這個限制,我不得不求助於替換模式,如果有另外一個sed
(或其他)表達式可以做同樣的事情工作沒有替換模式,那麼我會很高興看到它,但我仍然主要對我的bug的性質很好奇)。
這是我用過的命令:
sed 's/\[\([^] ]*\)\]/\1/g' file.txt
file.txt的地方可能包含:
[ [ a[1](t) + b[1](t) ] + [ a[2](t) * b[2](t) ] ]
命令會產生
[ [ a1(t) + b1(t) ] + [ a2(t) * b2(t) ] ]
現在我嘗試通過將其放入腳本來自動執行此操作。由於我需要以許多其他方式處理文本,因此我創建了一個臨時變量來保存方括號的更改。這裏是 '的' 腳本:
#!/bin/bash
#$1 is file name.
square_change=$(sed 's/\[\([^] ]*\)\]/\1/g' "$1")
echo $square_change
./script.sh file.txt
輸出:
[ [ a1(t) + b1(t) ] + [ a2(t) file2.txt file.txt script.sh b2(t) ] ]
其中file2.txt file.txt script.sh
是我的腳本目錄中的文件。
我希望它輸出什麼sed 's/\[\([^] ]*\)\]/\1/g' file.txt
原來做。我花了一些時間嘗試不同的事情,但似乎沒有任何工作。任何想法,我去哪裏錯了?
乾杯,