我有一个文件,这个文件包含一个类似于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/