linux - 如何在bash中的某些字符之间获取2个字符串
问题描述
细绳:
echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran"
我想在 | 的第一个实例之前抓住一切 以及 External_SOC 和 ;PCRF 之间的所有内容。如果可能,将它们存储为 2 个不同的变量。
x=40125512
y=ALPHA3
这给了我以下信息:
sed -e 's/|.*External_SOC=\(.*\);PCRF.*/\1/'
40125512ALPHA3
解决方案
编辑:根据 OP,如果是这种情况,则需要在单行创建 2 个变量中完成,然后尝试以下操作。
read -r x y <<<$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*=\([^;]*\).*/\1 \2/')
echo "$x"
40125512
echo "$y"
ALPHA3
或根据 anubhav 先生的评论使用以下内容:
read x y < <(sed -E 's~^([^|]+)\|.*External_SOC=(.+);PCRF.*~\1 \2~' <<< "40125512|abcd32External_SOC=ALPHA3;PCRFabcran")
请您尝试以下操作。可以从 2 个单独的命令中使用它来创建 2 个单独的变量。
x=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*/\1/')
echo "$x"
40125512
y=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/.*=\([^;]*\).*/\1/')
echo "$y"
ALPHA3
推荐阅读
- spring - 如何将 Grails 2.2.4 版本升级到最新或最新版本?
- algorithm - 从源到图中所有节点的最短路径距离 - O(m + n log(n)) 时间
- spring-boot - 在 Wildfly 上运行时 Spring Boot 应用程序问题(bean 创建错误)
- php - 无法使用 php 查询对齐用户聊天
- java - 胖 jar 中的 JasperReport File Not Found 错误
- webpack - 如何为使用 webpack 构建的库编写回归测试?
- javascript - 如何在 ReactJS 中使用 filter() 从数组中删除一项 - 函数无法正常工作
- xamarin - 是否可以在 Xamarin 中使用 Google Cloud Vision Nuget 突出显示检测到的文本?
- asp.net - 如何在颤动中从 api url 加载图像?
- c# - 如何保存不同类型的值而不转换它们,从而在 C# 中丢失它们的特定字段/方法?