1

我想在我的项目目录中的所有文件中用 2 个空格替换所有选项卡。这是我编写的代码,但它没有按预期工作。

选项卡与文件中的一样。

for i in *
do
  sed 's/tab/spacespace/g' "${i}" > temp.txt && mv temp.txt "${i}"
done

有什么建议么 ?

4

2 回答 2

2

你也可以使用expand

for f in *; do
    expand -t2 "$f" > tmp && mv tmp "$f"
done

expand推荐选项如下:

例如考虑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实用程序巧妙地处理了上述情况。

于 2013-06-18T13:34:04.843 回答
0

在我的代码中发现了一个愚蠢的错误。这是有效的

for i in * 
do
  sed 's/\t/  /g' "${i}" > temp.txt && mv temp.txt "${i}"
done
于 2013-06-18T13:21:39.237 回答