bash- 修剪 txt 文件中的偶数行

标签 bash awk sed cut tr

我想用 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 选项定义了我们的两个变量,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

    这是打印该行的神秘速记。

关于bash- 修剪 txt 文件中的偶数行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475764/

相关文章:

bash - 获取 qrencode --version 输出的特定部分

linux - sed 在多行的两个标签之间查找和替换

awk - 将文本 block 中的第一行与 block 中的每一下一行合并

c - 在 execl() bash 返回 eio(输入/输出错误)后从标准输入读取

linux - 删除公共(public)子目录

linux - 使用 bash 计算 Linux 上最小化的窗口

awk - 为每个 n 列值创建新行,同时保持第 1 列值

unix - 仅打印字符串中的第一个字段

linux - 如何在 bash 中使用带有多个斜杠的 sed 命令

linux - 我如何复制一个 bash 实例