linux - 如何确定逗号分隔字符串中字符串的顺序位置?

标签 linux bash csv

我目前正在编写一个脚本,该脚本将重新排列 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/

相关文章:

linux - 如何更改 linux 串行线的读取缓冲区大小?

linux - 如何为 linux shell 设置 TERM 环境变量

python - 从 Python 脚本设置 env 变量

linux - vim 中 setpos 和 getpos 的奇怪行为

linux - Unoconv 将 excel 转换为 csv,分号不带引号

python - 旋转 GIF 图像并保存 GIF 动画

bash - 带有终端后记的 gnuplot 线宽和线型

sql - 从 CSV 文件批量插入 - 跳过重复项

regex - csv格式是正规文法还是上下文无关文法?

apache - 按列的值拆分 csv 文件 - Apache Nifi