删除交替行上的最后3个字符

时间:2014-05-27 22:13:46

标签: shell

我需要删除交替行中的最后3个字符。我有

 36960
32768
40800
16384
22656
4096

我需要输出

 36960
32
40800
16
22656
4

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:1)

awk解决方案:

~$ cat file
 36960
32768
40800
16384
22656
4096
~$ awk '{if (NR%2){print $0}else{print substr($0, 0, length($0)-3)}}' file
 36960
32
40800
16
22656
4

答案 1 :(得分:1)

在" sed"之前使用"步骤"金额将做你想要的。这看起来像X~Y,它将匹配从第X行开始的每个第Y行。

sed '2~2 s/...$//g'

答案 2 :(得分:0)

将数字除以1000并将答案存储为整数。

因此:

int a = 32768/1000;

存储在a中的值将为32

对于替代线:

使用递增2的循环(假设您将这些数字存储在数组中)

for(a=0;a<6;a=a+2)
{ 
    place code described above here; 
}

答案 3 :(得分:0)

这是一个执行它的awk程序:

if (NR % 2 == 0) {
  print gensub(/(.*).../, "\\1", "g"); 
}
else
{
 print $0
}

如果我像这样运行它,我得到显示的输出:

:> awk '{ if (NR % 2 == 0) { print gensub(/(.*).../, "\\1", "g")} else { print $0 }}' << EOL
>  36960
> 32768
> 40800
> 16384
> 22656
> 4096
> EOL
 36960
32
40800
16
22656
4