我想用項目目錄中所有文件中的2個空格替換所有選項卡。 這是我寫的代碼,但它沒有按預期工作。遍歷文件並將所有選項卡替換爲兩個空格
選項卡與文件中的相同。
for i in *
do
sed 's/tab/spacespace/g' "${i}" > temp.txt && mv temp.txt "${i}"
done
有什麼建議嗎?
我想用項目目錄中所有文件中的2個空格替換所有選項卡。 這是我寫的代碼,但它沒有按預期工作。遍歷文件並將所有選項卡替換爲兩個空格
選項卡與文件中的相同。
for i in *
do
sed 's/tab/spacespace/g' "${i}" > temp.txt && mv temp.txt "${i}"
done
有什麼建議嗎?
您也可以使用expand
for f in *; do
expand -t2 "$f" > tmp && mv tmp "$f"
done
expand
建議選項:
例如考慮tabsize = 8。 (大TABSIZE選擇,爲了便於說明。)
然後<LINE_START>abc<TAB>pqrs
應如下表示:
T T T <~~~~~~ Tab markers on every 8th column, since tabsize=8.
abc pqrs
--> <-- This gap is 5 characters, not 8.
如果有人用N位盲目替換所有的標籤,那麼這將是錯誤的。但是,這將用於替換LEADING選項卡。
expand
實用巧妙地照顧上述情況。
在我的代碼中發現了一個愚蠢的錯誤。下面的原因這是工作
for i in *
do
sed 's/\t/ /g' "${i}" > temp.txt && mv temp.txt "${i}"
done
擴展建議選項(請參閱其他答案)。此外,即使在sed中,您也不需要使用重定向+ mv。 sed已經有一個'-i'選項。 – anishsane
@anishsane -i真的很有用。非常感謝。 – sachinjain024