嗨需要一个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
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] 举报,一经查实,本站将立刻删除。