我想做这样的事:
echo "abc edg.txt" | awk -F. '{print $0"---"$1}'
我希望结果应该是:
abc edg-txt
但事实证明:
abc edg.txt--abc edg
是什么导致了这种行为,以及如何修复代码以产生我期望的输出?
发布于 2010-12-19 09:00:00
在awk中,$0
计算出整个记录,字段索引是基于一个的.
你可能想做:
$ echo "abc edg.txt" | awk -F. '{print $1"---"$2}'
abc edg---txt
发布于 2010-12-19 17:04:52
如果您只想替换圆点:
var="abc edg.txt"
echo ${var/./---}
发布于 2010-12-19 09:29:18
Frédéric Hamidi's answer用awk
解决了您的问题,但是既然您询问了如何在Bash中按点拆分字符串,下面的答案就是这样做的,而不必求助于awk
$ foo="abc edg.txt" ; IFS=. ; a=($foo) ; echo ${a[0]}---${a[1]}
abc edg---txt
如果你只想在最后一个“分手”,那就更容易了。在字符串中:
$ foo="abc edg.txt" ; echo ${foo%.*}---${foo##*.}
abc edg---txt
https://stackoverflow.com/questions/4482225
复制相似问题