打印以偶数开头的行

时间:2017-07-23 03:00:24

标签: regex grep numbers

我有以下输入,

10
12    a
12 a
14a

以下命令

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

(或等效的grep命令)返回

12    a   
12 a
只有

而不是10,因为有一个EOL跟随10.另一方面,如果我放弃\ s,也会返回14a,这不是数字。

谢谢!

2 个答案:

答案 0 :(得分:1)

对于给定的数据,这里有一些可以提供预期结果的命令。

<强> PERMISSION_DENIED

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
exports.addUserToDB = functions.auth.user().onCreate(event => {
  admin.database().ref('/users/' + event.data.uid).set({
    name: event.data.displayName,
    email: event.data.email
  });
});

search & replacement:

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

search & replacement using awk第10行在10之后没有任何内容,第12行在12之后有空格而第16行在16之后有选项卡。

示例运行

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

示例运行(使用awk)

NOTE:

答案 1 :(得分:0)

允许使用EOL而不是其他字符。

$ sed -rn '/^[0-9]*[02468](\s|$)/p' < data
10
12    a
12 a
相关问题