在文件上多次应用 sed 命令

Application of sed command several times on a file

我想多次将此 sed 命令应用于一个文件:

sed '1~2d' file.txt>file1.txt

假设我想执行 4 次,有没有办法同时获取中间文件?

提前致谢

此致

(文件是 1m UTM 坐标,我想降低测量精度以使文件易于管理)

试试这个:

mv file.txt file0.txt
for i in `seq 1 10`; do
    sed '1~2d' file$(($i-1)).txt > file$i.txt
done
mv file0.txt file.txt

它将生成 10 个文件,名称为 file1.txt、file2.txt 等。这些文件中的每一个在前一个文件上都有 sed 命令 运行。

顺便说一句,$(()) 是 bash 算术评估。这就是减1的方法。

听起来您需要的是(用您想要的任何数字替换 62):

awk '{for (i=2;i<=6;i+=2) if (!(NR%i)) print > ("file"i)}' file

例如运行 在空目录中:

$ seq 1 20 | awk '{for (i=2;i<=6;i+=2) if (!(NR%i)) print > ("file"i)}'

$ lf
file2  file4  file6

$ cat file2
2
4
6
8
10
12
14
16
18
20

$ cat file4
4
8
12
16
20

$ cat file6
6
12
18

你可以反其道而行之:

sed -n -i '16~16p' file.txt

-n 选项禁止 sed 在处理每一行后打印缓冲区的默认行为。 'p' 命令打印你想要的。

-i 选项告诉 sed 处理命名文件 "in-place",这实际上意味着它将管理创建一个临时文件,并在成功时用它替换原始文件。这比将输出直接重定向到 sed 作为输入读取的文件要安全得多。