Shell 具有多个标准的Sed
我有3个Shell 具有多个标准的Sed,shell,unix,sed,criteria,conditional-statements,Shell,Unix,Sed,Criteria,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=\(
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
每个命令都有一个标准。我只想把3个命令放到一个命令中,得到一个输出文件,其中包含所有结果,作为三个条件的并集。这不管用吗
sed -n 's/.*domain=\([^&]*\).*sdk_ver=\([^&]*\).*/\1 \2/p' inputfile | sed -n 's/.*sdk_version=\([^&]*\).*domain=\([^&]*\).*/\2 \1/p' | sed -n 's/.*domain=\([^&]*\).*sdk_version=\([^&]*\).*/\1 \2/p' > outputfile
使用多个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
在本例中,sed将在每个输入行上顺序运行表达式,并且仅在处理序列中的最终表达式后打印模式空间。当然还有其他的方法可以做到这一点,但给出您的示例,这似乎是最合适的。
sed-e
允许使用在一行中编写代码>用于单独的命令
sed -e 's/.*domain=\([^&]*\).*sdk_ver=\([^&]*\).*/\1 \2/ ; s/.*sdk_version=\([^&]*\).*domain=\([^&]*\).*/\2 \1/ ; s/.*domain=\([^&]*\).*sdk_version=\([^&]*\).*/\1 \2/p'
轻微修正-不需要“-ne”。只要“-e”就行了。谢谢你的回复,但我需要的不是加入关系。我想要联合关系,输出日志,只要我认为管道是合理的答案,但它需要三个单独的过程。不是不使用它的理由;在一个进程中执行所有操作的效率更低。YMMV。满足任何标准,然后放入结果。所以。。。运行第一个,然后附加下两个?请通过包含您正在用作测试语料库的任何样本来改进您的问题。此外,还应包括一份格式正确的预期输出样本,以便人们了解您试图实现的结果。