我想在项目目录中的所有文件中用2个空格替换所有选项卡。 这是我编写的代码,但它没有按预期工作。
标签与文件中的标签相同。
for i in *
do
sed 's/tab/spacespace/g' "${i}" > temp.txt && mv temp.txt "${i}"
done
有什么建议吗?
答案 0 :(得分:2)
您也可以使用expand
for f in *; do
expand -t2 "$f" > tmp && mv tmp "$f"
done
出于以下原因,建议使用 expand
:
e.g。考虑tabsize = 8。 (选择较大的标签以便于解释。)
然后<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
实用程序巧妙地处理上述情况。
答案 1 :(得分:0)
在我的代码中发现了一个愚蠢的错误。这是有效的
for i in *
do
sed 's/\t/ /g' "${i}" > temp.txt && mv temp.txt "${i}"
done