在Linux shell脚本中删除字符串的特定字符

在Linux shell脚本中删除字符串的特定字符

我需要从字符串中删除一些数字,a:和 2 ,看起来像"

"9.cgadjka.jsjdaj:12345"

我只需要

9.cgadjka.jsjdaj

我第一次在 Linux 终端编写脚本,现在对此不太了解。

答案1

使用sed

$ echo '"9.cgadjka.jsjdaj:12345"' | sed 's/:.*\|"//g'
9.cgadjka.jsjdaj

匹配:和 其后的所有字符,或者"并删除它们

答案2

使用 GNUgrep你可以这样做:

$ echo '"9.cgadjka.jsjdaj:12345"' | grep -Po '(?<=").*(?=:)'
9.cgadjka.jsjdaj

答案3

在评论中您会看到解决方案sed。您还可以使用以下命令删除这些符号awk

echo "9.cgadjka.jsjdaj:12345" |awk -F: '{print $1}'

如果双引号是字符串的一部分,您应该使用:

STRING='"9.cgadjka.jsjdaj:12345"'
echo $STRING |awk -F'[":]' '{print $2}'

其中包含带有双引号 ( )STRING的字符串"

相关内容