尝试打印匹配表达式时使用sed的引用\1无效
在我开始之前,我已经研究了这个问题,但似乎解决方案是它们并没有逃过正则表达式中的括号。我得到了同样的错误,但我没有分组正则表达式。我要做的是在lastlog文件中查找所有名称/用户名,并仅返回UNs 我所拥有的:尝试打印匹配表达式时使用sed的引用\1无效,sed,backreference,Sed,Backreference,在我开始之前,我已经研究了这个问题,但似乎解决方案是它们并没有逃过正则表达式中的括号。我得到了同样的错误,但我没有分组正则表达式。我要做的是在lastlog文件中查找所有名称/用户名,并仅返回UNs 我所拥有的: s/^[a-z]+ |^[a-z]+[0-9]+/\1/p 我已经看到许多解决方案展示了如何在awk中实现这一点,这对于将来的参考是非常好的,但我想使用sed实现这一点 编辑例如输入: dzhu pts/15 n0000d174.cs.ut
s/^[a-z]+ |^[a-z]+[0-9]+/\1/p
我已经看到许多解决方案展示了如何在awk中实现这一点,这对于将来的参考是非常好的,但我想使用sed实现这一点
编辑例如输入:
dzhu pts/15 n0000d174.cs.uts Wed Feb 17 08:31:22 -0600 2016
krobbins **Never logged in**
js24 **Never logged in**
如果替换命令的第一部分中没有任何捕获组,则不能使用反向引用(例如
\1
)
假设您需要行中的第一个单词,可以运行以下命令:
sed -n 's/^\s*\(\w\+\)\s\?.*/\1/p'
说明:
抑制sed打印其处理的每一行的默认行为-n
匹配行的开头,后跟任意数量的空格^\s*
捕获一个或多个单词字符(字母和数字)\(\w\+\)
匹配一个或零个空格,后跟任意数量的字符。这是为了确保我们匹配捕获组中的整个单词\s\?.*
用捕获的组替换匹配的行\1
标志打印与表达式匹配的行。结合p
,这意味着只打印匹配项-n
我希望这有帮助 如果替换命令的第一部分中没有任何捕获组,则不能使用反向引用(例如
\1
)
假设您需要行中的第一个单词,可以运行以下命令:
sed -n 's/^\s*\(\w\+\)\s\?.*/\1/p'
说明:
抑制sed打印其处理的每一行的默认行为-n
匹配行的开头,后跟任意数量的空格^\s*
捕获一个或多个单词字符(字母和数字)\(\w\+\)
匹配一个或零个空格,后跟任意数量的字符。这是为了确保我们匹配捕获组中的整个单词\s\?.*
用捕获的组替换匹配的行\1
标志打印与表达式匹配的行。结合p
,这意味着只打印匹配项-n
我希望这有帮助 您认为
\1
的作用是什么?我建议您看看。包括小样本输入和预期输出将有助于我们澄清您的想法。祝你好运。你认为\1
有什么用?我建议你看看。包括小样本输入和预期输出将帮助我们澄清你的想法。祝你好运。你能用格式化的版本编辑你的帖子吗?我不知道注释中的换行符应该放在哪里,我也不想假设.Edited。我希望这就是你想要的。你能用格式化的版本来编辑你的帖子吗?我不知道注释中的换行符应该放在哪里,我也不想假设.Edited。我希望这就是你要找的。