有没有什么命令找出混用了 tab 和空格作为缩紧的文件?

2015-08-17 16:38:42 +08:00
 alphonsez

python 被改坏了。。。

2894 次点击
所在节点    问与答
8 条回复
Theo14
2015-08-17 16:48:58 +08:00
用 editplus 的正则表达式查找所有 tab 再替换成(四个?)空格
loading
2015-08-17 16:56:24 +08:00
楼上正解!
@Theo14
alphonsez
2015-08-17 18:25:10 +08:00
说是不能全改已有的文件,要和文件本来的保持一致。另外,在服务器上……

于是我这么干了(大改如此):

grep -ril '\t' * | sort > a.txt
grep -ril ' ' * | sort > b.txt
comm -1 -2 a.txt b.txt

然后把这些改坏的文件给手动修复了(用了 sed )。
kodango
2015-08-17 21:01:16 +08:00
cat -A yourfile.py
或者
vim yourfile.py ,让后 :set list
yakczh
2015-08-17 21:13:03 +08:00
notepad++ 菜单栏选设置->首选项->制表符设置->制表符宽度输入 4 选中[转换为空格 ]
alphonsez
2015-08-18 14:19:10 +08:00
@kodango 问题是,有一大堆文件要检查。
kodango
2015-08-19 21:03:20 +08:00
@alphonsez

$ find . -name '*.py' | xargs -I{} awk 'BEGIN { has_tab = 0; has_space = 0; }
{
if ($0 ~ /^\t+ / || $0 ~ /^ +\t/) { /* mixed tab and space in one line */
printf "%s: found mixed tab and space\n", FILENAME;
nextfile;
} else if ($0 ~ /^\t/) { /* find tab in one line */
if (has_space == 1 ) {
printf "%s: found mixed tab and space\n", FILENAME;
nextfile;
} else {
has_tab = 1;

}
} else if ($0 ~ /^ /) { /* find space in one line */
if (has_tab == 1 ) {
printf "%s: found mixed tab and space\n", FILENAME;
nextfile;
} else {
has_space = 1;
}
}
}' {}

简单测试过,命令的用法。。感觉比较恶心,不知道有没有方便的方法。。
alphonsez
2015-08-20 00:53:14 +08:00
@kodango 赞,多谢, awk 好强大

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/213827

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX