2014-10-20 44 views

回答

3

使用awk

$ awk -v x=2 -v y=3 '0==NR%2 {$0=substr($0,x+1,length($0)-y-x)} 1' file 
1 
BBBBB 
2 
DD 

工作原理:

  • -v x=2 -v y=3

    -v選項定義我們的兩個變量,xy

  • 0==NR%2 {$0=substr($0,x+1,length($0)-y-x)}

    NR是行計數器。當0 == NR%2,我們在一個偶數行,我們從開頭刪除x個字符,從最後刪除y。在awk,$0是整條線。我們用位於x+1的子字符串替換,長度爲length($0)-y-x

  • 1

    這是打印行神祕的簡寫。

3

羚SED具有~步驟地址運算符。 2~2的意思是「從第2行開始,每隔第二行匹配一次」。

x=2 
y=3 
sed "2~2{s/^.\{$x\}//;s/.\{$y\}$//}" input 
2
perl -pE '$_=substr($_,'$x',-'$y')."\n" unless $. %2' 
0

這可能會爲你工作(GNU SED):如果你想參數

sed -r 'n;s/^.{2}(.*).{3}$/\1/' file 

或:

x=2 y=3 
sed -r "n;s/^.{$x}(.*).{$y}$/\1/" file 

n打印奇數行中的偶數行繪圖替代命令。