Pau*_*ce. 233
在Bash(以及ksh,zsh,dash等)中,您可以使用参数扩展%来删除字符串末尾的字符或#从字符串的开头删除字符.如果您使用这些字符中的单个字符,则将删除最小的匹配字符串.如果你加倍角色,最长的将被删除.
$ a='hello:world'
$ b=${a%:*}
$ echo "$b"
hello
$ a='hello:world:of:tomorrow'
$ echo "${a%:*}"
hello:world:of
$ echo "${a%%:*}"
hello
$ echo "${a#*:}"
world:of:tomorrow
$ echo "${a##*:}"
tomorrow
Run Code Online (Sandbox Code Playgroud)
Eld*_*Mor 124
一个例子可能有用,但如果我理解正确,这将有效:
echo "Hello: world" | cut -f1 -d":"
Run Code Online (Sandbox Code Playgroud)
这会将"hello:world"转换为"hello".
Kap*_*myc 13
我知道一些解决方案:
# Our mock data:
A=user:mail:password
Run Code Online (Sandbox Code Playgroud)
$ echo $A | awk -v FS=':' '{print $1}'
user
Run Code Online (Sandbox Code Playgroud)
$ echo ${A%%:*}
user
Run Code Online (Sandbox Code Playgroud)
$ echo $A | sed 's#:.*##g'
user
Run Code Online (Sandbox Code Playgroud)
$ echo $A | egrep -o '^[^:]+'
user
Run Code Online (Sandbox Code Playgroud)
$ echo $A | cut -f1 -d\:
user
Run Code Online (Sandbox Code Playgroud)
egrep -o '^[^:]*:'
Run Code Online (Sandbox Code Playgroud)