管道输出的连续行中的 Grep 字节偏移量



我正在尝试导出管道输入的每一行上特定字符的字节偏移量。例如,输出 abc.txt:

....gugucaA....
.....guauAgggu..
.....ggguguAau..

应返回:

11:A
10:A
12:A

我试过使用:

cat abc.txt | while read -r line; do grep -aob 'A'; done

正如这里 https://unix.stackexchange.com/a/7561/327888 所解释的。

但是,这只会偏移输出并保留所有"A"的累积字节偏移量。

即。

11:A
21:A
33:A

我错过了一个选项吗?任何帮助将不胜感激!

while read -r line; do grep -ob 'A' <<< "$line"; done < abc.txt

输出:

10:A9:A11:A

如果你只需要偏移量:

$ awk '{print index($0, "A")-1}' ip.txt
10
9
11
$ perl -lne 'print index($_, "A")' ip.txt
10
9
11

不需要多次 grep 调用。如果您的 grep 版本支持 P 选项,您可以执行以下操作:

grep -Po "[^A ]+(?=A)" inputfile | awk '{print length}'

输出:

10
9
11

最新更新