IT序号网

shell之具有多个条件的 sed

fff_TT 2024年09月07日 编程语言 12 0

很难说出这里问的是什么。这个问题是模棱两可的、含糊的、不完整的、过于宽泛或修辞的,不能以其目前的形式得到合理的回答。如需帮助澄清此问题以便可以重新打开,visit the help center .




9年前关闭。




我有 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 

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

请您参考如下方法:

使用多个 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 将在每个输入行上顺序运行表达式,并且只在序列中的最后一个表达式被处理后打印模式空间。当然还有其他方法可以做到这一点,但鉴于您的示例,这似乎是最合适的。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!