Shell 仅在sed中匹配时打印特定行号
如果Shell 仅在sed中匹配时打印特定行号,shell,sed,line,match,awk,Shell,Sed,Line,Match,Awk,如果sed(Linux流编辑器)中存在匹配项,如何打印(特定)行?假设我有第三行,我只想在它满足匹配条件时打印它;我如何打印这个 我正在将命令的输出传送到sed,并且不希望再次使用sed的输出传送到sed: | sed -ne ''"$currline"'p' | sed -n '/state/p'` 另外,我将输出分配给一个带有倒勾的变量 给定输入A和B以及搜索模式状态,A的输出应为行3无状态(注意,3是数据的一部分),B的输出应为零: Input A Input
sed
(Linux流编辑器)中存在匹配项,如何打印(特定)行?假设我有第三行,我只想在它满足匹配条件时打印它;我如何打印这个
我正在将命令的输出传送到sed
,并且不希望再次使用sed
的输出传送到sed
:
| sed -ne ''"$currline"'p' | sed -n '/state/p'`
另外,我将输出分配给一个带有倒勾的变量
给定输入A和B以及搜索模式
状态
,A的输出应为行3无状态
(注意,3是数据的一部分),B的输出应为零:
Input A Input B
1 state 1 state
2 statement 2 statement
3 stateless 3 statless
4 stated 4 stated
5 estate 5 estate
与:
注意
- 模式是一个
regex
避免解析整个文件退出
sed
命令中实现它
假设infle
包含内容:
one
two
three
four
five
如果要打印第四行(如果与ur
匹配),请使用:
sed -ne '4 { /ur/ { p; q } }' infile
这将产生:
four
3与第3行匹配;第3行的操作是“如果您发现/state/
,请打印”;-n
防止行的常规打印
此外,你应该避免反勾号;使用var=$(cmd1 | cmd2)
表示法比使用var=`cmd1 | cmd2`
表示法更好。这可能适合您(GNU-sed):
或
sed是一个很好的工具,用于在一行上进行简单替换,但对于其他任何内容,只需使用awk:
awk 'NR==3 && /state/'
有什么不符合grep的吗?请发布预期输出的示例您想将行或行号作为输出吗?我不清楚,我只是在找。非常感谢您的回答,我希望OP选择您的答案。
sed -n '3{/state/p;}' $file
sed '3!d;/state/q;Q' file
sed -ne '3!b' -e '/state/p' -e 'q' file
awk 'NR==3 && /state/'