Sed有多个标准

use*_*782 2 unix shell criteria sed conditional-statements

我有3个sed命令:

sed -n 's/.*domain=\([^&]*\).*sdk_ver=\([^&]*\).*/\1 \2/p' inputfile > outputfile
sed -n 's/.*sdk_version=\([^&]*\).*domain=\([^&]*\).*/\2 \1/p'  inputfile > outputfile
sed -n 's/.*domain=\([^&]*\).*sdk_version=\([^&]*\).*/\1 \2/p' inputfile > outputfile
Run Code Online (Sandbox Code Playgroud)

每个命令都有一个标准.我只想将3个命令放入1个命令中,以获得单个输出文件,其中包含所有结果作为三个条件的并集.

Tod*_*obs 10

使用多个Sed表达式

您可以在由换行符分隔的脚本中放置多个sed表达式,也可以将多个sed表达式放在由-e选项分隔的多个表达式中.例如:

sed -n -e 's/.*domain=\([^&]*\).*sdk_ver=\([^&]*\).*/\1 \2/'      \
       -e 's/.*sdk_version=\([^&]*\).*domain=\([^&]*\).*/\2 \1/'  \
       -e 's/.*domain=\([^&]*\).*sdk_version=\([^&]*\).*/\1 \2/p' \
       inputfile > outputfile
Run Code Online (Sandbox Code Playgroud)

在此示例中,sed将在每个输入行上按顺序运行表达式,并仅在处理序列中的最终表达式后打印模式空间.肯定有其他方法可以做到这一点,但鉴于你的例子,这似乎是最合适的.