我有一个文件,这个文件包含一个类似于34343434343434343434的数字。
我要删除每个替换数字
输入:343434343434343434343434
期望输出:
444444444444

最佳答案

我不清楚你是否想删除第一个,第三个,第五个…第二,第四,第六个…性格。
如果是前者,

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

如果是后者,
$ echo 'abcdefghijklmnopqr' | perl -pe 's/(.)(?:.|$)/$1/g'
acegikmoq

[编辑:上一版本的答案中的sed命令没有正确处理行中奇数个字符的输入。]
这与文件的内容无关,只是它将保留行边界。如果要删除恰好位于文件开头奇数(或偶数)偏移处的换行符,则必须执行更复杂的操作--此时,我可能会使用C,因为在C中更容易忽略行边界,而不是使用任何shell实用程序:
#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/

10-13 02:19