作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
假设我们有以下数据
B346879 length: 12 B34 L677
B111879 length: 32 B33 L677
B545879 length: 34 B34 L677
B344879 length: 98 B33 L677
B090879 length: 45 B33 L677
我正在寻找“B34”,所以我想从这个系列中打印第一行和第三行。但是如果我会使用:
cat t.txt | sed -n '/B34/p' | awk '{print $1", "$4" "$5}' | sed 's/B//g'
第 4 行也将被打印,因为“B34”匹配“B344879”的前 3 个字符。我知道使用 sed 's/pattern/replacement/n'
之类的东西,您只能替换正则表达式的第 n 次出现。但是它如何与打印一起使用。我试过 sed -n '/B34/2p'
之类的东西,但那是无效的。
最佳答案
这可能对你有用(GNU sed):
sed -rn 's/^\s*(\S+)\s+(\S+\s+){2}(B34)\s+(\S+)/\1, \3 \4/;T;s/B//g;p' file
关于regex - 第 n 次出现正则表达式的 sed 打印行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19390790/
我是一名优秀的程序员,十分优秀!