Nac*_*ack 1 sed regular-expression
我有这个文件,它只打印一行。我正在使用不同的 sed 命令操作这一行。
apple orange.5678 dog cat 009 you
Run Code Online (Sandbox Code Playgroud)
我想获取“orange.5678”并包含“你”并忽略其他所有内容。我希望它看起来像下面
orange.5678 you
Run Code Online (Sandbox Code Playgroud)
我不确定从哪里开始以及如何排除除“orange.5678”和“you”之外的所有内容。任何帮助都会很棒!
$ sed -r 's/.* ([^ ]+\.[^ ]+).* ([^ ]+)$/\1 \2/' orange
orange.5678 you
Run Code Online (Sandbox Code Playgroud)
-r 使用扩展正则表达式s/old/new替换old为new.* 任意数量的任意字符(some characters)保存some characters以供稍后替换时参考[^ ]+ 一些不是空格的字符\. 文字点$ 行结束\1 对已保存模式的反向引用所以s/.* ([^ ]+\.[^ ]+).* ([^ ]+)$/\1 \2/意味着,将行上的任何内容匹配到一些非空格字符之前的空格.,然后是 a之后的一些非空格字符(将这些字符保存在 的两侧.),然后匹配任何字符并保存最后一组行上的非空格字符,并用空格分隔的两个保存的模式替换整个匹配