bash - 如何从bash中的csv中提取值
问题描述
我有一个 csv 文件,其中包含很多行,如下所示。
,appOne ,na ,All, ,All ,All , ,PORTNAME,21500,
我需要在 bash 中最后得到 21500,这是一个进程将在其上启动的端口
csv 文件也有列,我想知道 21500 在哪里
伪代码将是这样的
get columns
split columns by ","
index = find where column = PORT
get row
split by ","
if i == index : return value
有什么建议么 ?
更新:
SKIP,APP ,REG,ENV,CLST, HST, INST, UID,PRM ,VAL ,COMMENTS
,appOne ,na ,All, ,All ,All , ,PORTNAME,21500,
解决方案
临时文件:
SKIP,APP ,REG,ENV,CLST, HST, INST, UID,PRM ,VAL ,COMMENTS
,appOne ,na ,All, ,All ,All , ,PORTNAME,21500,
function field_index() {
local field_name=$1
local header
read -a header
for ((i = 0 ; i < ${#header[@]} ; i++)); do
if [[ "${header[$i]}" =~ \s*"${field_name}"\s* ]]; then
echo $i
break
fi
done
}
port_field_index=$(field_index VAL < temp.csv)
function trim() {
echo "$1" | xargs echo -n
}
(
read _ # Skip header
while IFS=',' read -a row; do
trim "${row[$port_field_index]}" # Process port somehow
done
) < temp.csv
推荐阅读
- python - 如何修复“'QuerySet' 对象没有属性 'posts'”
- c++11 - 使用 std::is_same 和运算符 || 的编译错误
- php - 解析JSON时未定义的索引PHP
- python - 张量流中的掩码张量部分,数据增强
- youtube-javascript-api - YouTube iFrame API,通过外部控件更改后获取当前字幕语言或内部播放器控件不起作用
- django - pytest - 如何修补方法以避免数据库调用
- php - 只进行一次查询并将其存储在数组中还是每次都进行查询更有效?
- javascript - 试图制作一个角色控制器,但如果我按下混搭键,按键输入会变得混乱
- r - Rstudio 上的 DataFrame 转换:添加/删除类别并进行计算
- endianness - 指令的字节顺序