微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Shell脚本通过文件csvparsing并逐行处理

嗨需要一个shell脚本parsing通过csv文件 – 逐行,然后逐字段]

文件将如下所示

X1,X2,X3,X4 Y1,Y2,Y3,Y4

我需要提取这些X1,X2 ….

我写了一个脚本,但如果该行超过一行,则失败

如何编辑在Linux / bash中使用&&排队的进程?

如何通过SSH来区分目录

在不使用grep -w的情况下在QNX中查找完全匹配

为什么有人会使用echo为bash或ksh中的variables赋值?

正则expression式只用egrep来捕捉整个单词

如何检查shell脚本中的if语句中的两个可能性?

文件中的行数

Shell Vs Process.start执行外部应用程序

从SSH服务器分配variables到本地机器variables

Vim在插入模式下更改块光标

这是我该怎么做的。

首先我设置IFS环境变量来告诉read “,”是字段分隔符。

export IFS=","

给定包含您提供的数据的文件“输入”,我可以使用下面的代码

cat test | while read abcd; do echo "$a:$b:$c:$d"; done

快速回顾上面的情况。 cat test | 读取文件并管理它。 while在do和done之间运行代码,而read返回true。 read从标准输入中读取一行,并根据$ IFS的值将其分离为变量(“a”,“b”,“c”和“d”)。 最后, echo只显示我们读取的变量。

这给了我以下的输出

X1:X2:X3:X4 Y1:Y2:Y3:Y4

顺便说一句, BASH手册总是很好的阅读。 每次阅读时你都会学到新的东西。

因为eykanal提到AWk和sed ,我想我会展示如何使用它们。

awk -F,'BEGIN{OFS="n"}{$1=$1; print}' inputfile

要么

sed 's/,/n/' inputfile

然后一个shell脚本可以处理它们的输出

awk_or_sed_cmd | while read -r field do do_something "$field" done

当然,你可以在AWK脚本中进行处理:

awk -F,'{for (i=1;i<=NF;i++) do_something($i)}' inputfile

ls -l

vi filename.sh

#!bin / sh的

回声“输入模式”

猫>测试(输入数据并保存)

猫测试| while read(input);(例如:“$ a:$ b:$ c:$ d”);

DONE

echo“模式显示为”$ a:$ b:$ c:$ d“ n”

出口(0);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐