我有一个文件,这个文件包含一个像这样的数字 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/