假设我有一个文件,test.java
事情是这样开始的每行
/* */ package com.a;
/* */ import java.util.List
/* */ etc
我想删除每行的前 10 个字符并替换为空白,因此运行命令后,文件应如下所示:
package com.a;
import java.util.List
etc
不是这个:
package com.a;
import java.util.List
etc
谢谢
我正在寻找正确的命令,该命令应该涵盖每一个 .java
文件位于下面的所有子目录中。
答案1
如果你确信前 10 个字符- 使用以下内容find
+sed
解决方案:
find . -type f -name "*.java" -exec sed -i 's/.\{10\}//' {} \;
find . -type f -name "*.java"
- 递归查找所有*.java
文件sed -i 's/.\{10\}//'
- 删除每个找到的文件中每行的前 10 个字符(-i
选项允许修改文件到位)该解决方案将与 GNU 一起使用
sed
。对于 BSD ,sed
你需要-i ''
,因为-i
那里需要一个参数。对于其他版本,sed
您根本没有-i
,需要将输出保存到不同的文件,然后mv
将该文件保存到原始名称。
答案2
尝试这个 :
sed -i -r 's/.{10}//' *.java