我想从一行中提取一些字段,例如:
echo "aaa,bbb-ccc,ddd" | sed 's/.*,\(.*\)-\(.*\),.*/\1 \2/'
Run Code Online (Sandbox Code Playgroud)
它将"bbb ccc"按照我的预期输出.但如果输入行不是模式,
echo "aaa,bbb,ccc,ddd" | sed 's/.*,\(.*\)-\(.*\),.*/\1 \2/'
Run Code Online (Sandbox Code Playgroud)
它将输出整行"aaa,bbb,ccc,ddd".我想要的是不匹配时,什么都不输出.我该怎么做?
sed -n 's /.,(.) - (.),./\1\2/p '
$ echo "aaa,bbb-ccc,ddd" | sed -n 's/.*,\(.*\)-\(.*\),.*/\1 \2/p'
bbb ccc
$ echo "aaa,bbb,ccc,ddd" | sed -n 's/.*,\(.*\)-\(.*\),.*/\1 \2/p'
$
Run Code Online (Sandbox Code Playgroud)
'-n'默认禁用模式空间的打印.
p使得sed打印匹配时.