2014-01-24 32 views
0

我嘗試修改文件中的行,其中每行都是命令,我需要將連續的數字作爲參數提供給不同的行。通過循環遍歷文件並添加連續號碼

BestFirst - > BestFirst -D 5 -N 5

BestFirst - > BestFirst -D 5 -N 10

BestFirst - > BestFirst -D 5 -N 15

...

BestFirst - > BestFirst -D 10 -N 15

...

BestFirst - > BestFirst -D 100-N 100

我試圖啓動與-N選項,但沒有與此取得成功:

counter=5; while read line; do echo $line | sed -e "s/BestFirst/BestFirst -D 5 -N $counter/"; counter=$[ counter+5 ]; done < attribute_selectors_cfssubeval_bestfirst_various_parameters.csv 

這將返回或多或少正確的事情,但不會修改文件本身。

如何以正確的方式修改文件?

+0

原始文件是否真的只是字符串「BestFirst」重複多次?看起來,使用適當的'awk'腳本從頭開始生成整個文件會更快,而不是分別在輸入文件的每一行上調用'sed'。 – chepner

+0

@chepner我確定你是對的,我看到了一些類似awk問題的解決方案。我只是不明白awk使用它。 – aldorado

回答

2

你只是忘了在你的sed命令中確定輸出文件。請嘗試以下操作:

counter=5; while read line; do echo $line | sed -e "s/BestFirst/BestFirst -D 5 -N $counter/" >> result.csv; counter=$[ counter+5 ]; done < attribute_selectors_cfssubeval_bestfirst_various_parameters.csv 

結果將在文件results.csv

編輯:如果你想修改你正在閱讀的同一個文件:我不認爲這是一個好主意。如果希望文件具有完全相同的名稱,則可以在刪除源後重命名結果文件。

+0

關於你的編輯:我是那麼做的。修改或創建第二個並重命名 - 並沒有多少額外的努力 – aldorado

+0

很高興我可以幫助:) – omgBob