我有以下代碼,但是當我執行代碼時它不起作用,檔案 th2.csv 它是空的。sed 的作用是替換兩個單詞。我不知道如何使腳本正常作業。 必須使用while來完成。
bash th1.csv > th2.csv
腳本重擊
#!/bin/bash
while read -r line; do
echo "$line" | sed -E "s/,True,/,ll,/g;s/,False,/,th,/" th1.csv
done < th1.csv
uj5u.com熱心網友回復:
鑒于您必須逐行回圈和應用正則運算式的要求,然后考慮:
#!/bin/bash
while read -r line; do
echo "$line" | sed -E "s/,True,/,ll,/g;s/,False,/,th,/" >> th2.csv
done < th1.csv
這通過 while 回圈逐行讀取。每一行都作為標準輸入傳遞給sed. th1.csv請注意,我們在您最初的嘗試結束時洗掉了sed,因為這將覆寫sed從 stdin 讀取的內容(導致它忽略它,而是在每次迭代時一遍又一遍地處理檔案)。最后,我們每次迭代都附加>>到您的檔案中。th2.csv
猜測提前一步,您可能希望將這兩個檔案作為引數傳遞給腳本(僅基于您的第一個代碼片段),然后您可以將其更改為:
#!/bin/bash
while read -r line; do
echo "$line" | sed -E "s/,True,/,ll,/g;s/,False,/,th,/" >> "$2"
done < "$1"
而且,假設呼叫了這個腳本,myscript.sh你可以這樣稱呼它:
/bin/bash myscript.sh 'th1.csv' 'th2.csv'
或者,如果您使用 then 使其可執行chmod x myscript.sh:
./myscript.sh 'th1.csv' 'th2.csv'.
uj5u.com熱心網友回復:
用于sed -i在地方編輯檔案。
你可以參考man find
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/471548.html
下一篇:在shell腳本中查找多個字串
