如何在命令行中一次删除多个文本文件中的行?

如何在命令行中一次删除多个文本文件中的行?

我一直尝试从大约 50 个文本文件中删除第二行和第三行。

我需要保留标题但删除行“1”和“2”,这意味着我需要删除每个文本文件的第二行和第三行。我一直在尝试使用:

sed -i.bak'2,3d'*.txt

但只删除文件夹中第一个文件的行。如何才能让此操作应用于文件夹中的所有文件?

答案1

这里有两种方法,选择取决于您有多少个文件、名称有多长以及文件名是否有“奇怪的字符”。

for i in *.txt ; do
    sed -i.bak '2,3d' "$i"
done

或者,复杂的情况:

find . -maxdepth 1 -type f -name '*.txt' -print0 | \
    xargs -0 -r -n 1 sed -i.bak '2,3d'

相关内容