我想用 bash 从文件的所有偶数行中删除前 X 个字符和最后 Y 个字符。
输入:
1
AABBBBBCCC
2
GKDDABC
设 X=2 和 Y=3:
1
BBBBB
2
DD
最佳答案
使用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
选项定义了我们的两个变量,x
和y
。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
这是打印该行的神秘速记。
关于bash- 修剪 txt 文件中的偶数行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475764/