linux - 如何使用 unix 删除每个备用数字

标签 linux unit-testing unix sed awk

我有一个文件,这个文件包含一个像这样的数字 343434343434343434343434。

我想删除所有替代数字

输入:343434343434343434343434

期望的输出: 444444444444

最佳答案

我不清楚您是要删除第一个、第三个、第五个……字符还是第二个、第四个、第六个……字符。

如果是前者,

$ echo 'abcdefghijklmnopqr' | perl -pe 's/.(?:(.)|$)/$1/g'
bdfhjlnpr

如果是后者,

$ echo 'abcdefghijklmnopqr' | perl -pe 's/(.)(?:.|$)/$1/g'
acegikmoq

[编辑: sed以前版本的答案中的命令无法正确处理一行中字符数为奇数的输入。]

这与文件内容无关除了它将保留行边界。如果你想删除恰好在文件开头奇数(或偶数)偏移处的换行符,你必须做一些更复杂的事情——在这一点上我可能会使用 C,因为它更容易忽略行与任何 shell 实用程序相比,C 中的边界更容易理解:

#include <stdio.h>
int main(void)
{
    int c1, c2;
    for (;;) {
        c1 = getchar();
        c2 = getchar();
#ifdef PRINT_THE_EVEN_CHARACTERS
        if (c1 == EOF || c2 == EOF) break;
        putchar(c2);
#else
        if (c1 == EOF) break;
        putchar(c1);
        if (c2 == EOF) break;
#endif
    }
    return 0;
}

关于linux - 如何使用 unix 删除每个备用数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8635497/

相关文章:

linux - dd 磁盘镜像 - 何时使用哪个 conv 开关?

在另一个函数上从父级关闭子级

linux - 阻止其他计算机使用同一 IP 访问网站

java - 如何测试调用私有(private)方法的匿名内部类

linux - cp -R source_path target_path vs cp -R source_path/* target_path

angular - 是否可以使用 jest 为 select2 编写单元测试?

unit-testing - 在方法中模拟对象创建

c - debian中C头文件的位置

linux - 通过命令使用 ssh 和 pbrun 时出错

c - 在 c 中实现子 shell