我有以下输入,
10
12 a
12 a
14a
以下命令
sed -rn '/^[0-9]*[02468]\s/p'
(或等效的grep命令)返回
12 a
12 a
只有而不是10,因为有一个EOL跟随10.另一方面,如果我放弃\ s,也会返回14a,这不是数字。
谢谢!
答案 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