gpt4 book ai didi

regex - 打印以偶数开头的行

转载 作者:行者123 更新时间:2023-12-02 03:01:56 26 4
gpt4 key购买 nike

我有以下输入,

10
12 a
12 a
14a

下面的命令

sed -rn '/^[0-9]*[02468]\s/p'

(或等效的 grep 命令)返回

12    a   
12 a

只有而不是 10,因为在 10 之后有一个 EOL。另一方面,如果我删除\s,也会返回 14a,这不是一个数字。

谢谢!

最佳答案

对于给定的数据,以下是可以为您提供预期结果的命令。

搜索和替换:

sed -rn '/^[0-9]*[02468] |^[0-9]*[02468]$|^[0-9]*[02468]\t/p' n.txt

sed -rn 's/^[0-9]*[02468] |^[0-9]*[02468]$|^[0-9]*[02468]\t/blah/p' n.txt

使用 awk 搜索和替换:

awk -F" " '{if ($1 ~ /[02468]$/ && $1 % 2 == 0) print $1}' n.txt

awk -F" " '{if ($1 ~ /[02468]$/ && $1 % 2 == 0) print gensub($1,"blah", 1); else print $0;}' n.txt

注意:第 10 行在 10 之后没有任何内容,第 12 行在 12 之后有空格,第 16 行在 16 之后有制表符。

sample 运行

[/c]$ cat n.txt
10
11
12 a
13
14a
16

[/c]$ sed -rn '/^[0-9]*[02468] |^[0-9]*[02468]$|^[0-9]*[02468]\t/p' n.txt
10
12 a
16

[/c]$ sed -rn 's/^[0-9]*[02468] |^[0-9]*[02468]$|^[0-9]*[02468]\t/blah/p' n.txt
blah
blaha
blah

示例运行(使用 awk)

[/c]$ cat n.txt
10
11
12 a this is spaced line
13
14a
16 this is tab line

[/c]$ awk -F" " '{if ($1 ~ /[02468]$/ && $1 % 2 == 0) print $0}' n.txt
10
12 a this is spaced line
16 this is tab line

[/c]$ awk -F" " '{if ($1 ~ /[02468]$/ && $1 % 2 == 0) print gensub($1,"blah", 1); else print $0;}' n.txt
blah
11
blah a this is spaced line
13
14a
blah this is tab line

关于regex - 打印以偶数开头的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45261128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com