bash-修剪txt文件中的偶数行
我想用bash从文件的所有偶数行中删除前X个字符和最后Y个字符 输入:bash-修剪txt文件中的偶数行,bash,awk,sed,cut,tr,Bash,Awk,Sed,Cut,Tr,我想用bash从文件的所有偶数行中删除前X个字符和最后Y个字符 输入: 1 AABBBBBCCC 2 GKDDABC 设X=2,Y=3: 1 BBBBB 2 DD Gnu sed具有~步进地址运算符2~2表示“从第2行开始,每隔一行匹配一次” 使用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 工作原理: -vx=2-vy=3 -v选项定义了两个变量,x和y
1
AABBBBBCCC
2
GKDDABC
设X=2,Y=3:
1
BBBBB
2
DD
Gnu sed具有
~
步进地址运算符<代码>2~2表示“从第2行开始,每隔一行匹配一次”
使用
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
工作原理:
-vx=2-vy=3
选项定义了两个变量,-v
和x
y
NR是行计数器。当0==NR%2{$0=substr($0,x+1,长度($0)-y-x)}
时,我们处于偶数行上,我们从开头删除0==NR%2
字符,从结尾删除x
。在y
中,awk
是整行。我们替换为一个子串,该子串从位置$0
开始,长度为x+1
length($0)-y-x
这是打印这一行的隐晦速记1
x=2 y=3
sed -r "n;s/^.{$x}(.*).{$y}$/\1/" file
其中n
为替换命令打印偶数行中的奇数行
$ 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
sed -r 'n;s/^.{2}(.*).{3}$/\1/' file
x=2 y=3
sed -r "n;s/^.{$x}(.*).{$y}$/\1/" file