我有了這些行的文件:
s17 line linewidth 1.0
s18 line linewidth 1.0
.
.
.
s28 line linewidth 1.0
我想通過更換這些線路:
s17 line linewidth 2.0
s18 line linewidth 2.0
.
.
.
s28 line linewidth 2.0
我在bash寫出來的代碼:
#!/bin/bash
for VARIABLE in {17..28}
do
sed 's/s${VARIABLE} line linewidth 1\.0/s${VARIABLE} line linewidth 2\.0/g' ./band-structure-calcite.agr
done
然後我運行代碼通過使bash change.sh > changed.txt
但文件changed.txt
不續這些修改。
,如果你幫我解釋一下我你的代碼的答案的語法,因爲我學習的bash
單引號不插入變量,雙引號。 – choroba
運行'sed' N次效率低下,並會給你許多重複的輸出行(每行的N個副本,每個副本的* 1 *適當修改)。如果您只是想在符合這些數字的線路(大概不是其他線路)上將'1.0'更改爲'2.0',則有更好的方法來做到這一點。 –
@choroba:我已將腳本更改爲:'sed「s/s $ {VARIABLE} line linewidth 1 \ .0/s $ {VARIABLE} line linewidth 2 \ .0/g」./band-structure-calcite。 agr'並且它不起作用 –