我目前正在编写一个脚本,该脚本将重新排列 csv 文件的内容。如果我有一行类似这样的话:
stack,over,flow,dot,com
我怎样才能确定字符串/单词在命令分隔字符串中的位置。因此,例如,如果我要搜索堆栈,它将返回数字 1,如果我要搜索流,将返回数字 3,依此类推。我已经想到了几种可以做到这一点的方法,但它们大多是冗长的脚本,所以我觉得可能有更短/更简单的方法来做到这一点。如果有人可以提供建议/帮助,我将不胜感激,谢谢。这也是在 bash 环境中执行的
最佳答案
awk 单行代码:
awk -F, -vs=$search '{for (i=1;i<=NF;i++)if($i~"^"s"$"){print i;exit;}}{print "not found"}' yourString
(见下面的示例测试)
kent$ l="stack,over,flow,dot,com"
kent$ echo $l
stack,over,flow,dot,com
kent$ search=over
kent$ echo $search
over
kent$ awk -F, -vs=$search '{for (i=1;i<=NF;i++)if($i~"^"s"$"){print i;exit;}}{print "not found"}' <<<$l
2
kent$ search=foobar
kent$ awk -F, -vs=$search '{for (i=1;i<=NF;i++)if($i~"^"s"$"){print i;exit;}}{print "not found"}' <<<$l
not found
关于linux - 如何确定逗号分隔字符串中字符串的顺序位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347261/