免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3265 | 回复: 7
打印 上一主题 下一主题

[文本处理] 关于用C shell查找并提取csv文件中的字符串问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-03-31 16:23 |只看该作者 |倒序浏览
各位大神,小弟想要用C shell的语法(不是shell,是Cshell),查找并提取一个csv文件中的某一个字符串(只需查找每一行的第一个字符串),并把这个字符串所在行的所有字符串,依次赋值给变量。自己试了一些方法但是提取不出来啊。

比如一个test.csv中,有以下信息:
AB_1,CD_1,EF_1,GH_1
AB_2,CD_2,EF_2,GH_2
AB_3,CD_3,EF_3,GH_3
AB_4,CD_4,EF_4,GH_4
........,.......,.......,........
AB_n,CD_n,EF_n,GH_n

要求是:
以每一行的第一个字符串作为查找对象,
如果查找到AB_1,则把AB_1这一行的所有字符串依次赋值给var1,var2,var3,var4. 也就是var1=AB_1,var2=CD_1,var3=EF_1,var4=GH_1;
如果查找到AB_2,则把AB_2这一行的所有字符串依次赋值给var1,var2,var3,var4. 也就是var1=AB_2,var2=CD_2,var3=EF_2,var4=GH_2,
只用查找一次,并把所在行的所有字符串依次赋值给变量。其他的行不用操作。

求教啊,用C shell如何操作呢?谢谢各位大神!


论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
2 [报告]
发表于 2016-03-31 16:37 |只看该作者
  1. eval `awk -F',' '/AB_3/{print "set var1="$1";set var2="$2";set var3="$3";set var4="$4";"}' csv`
复制代码

论坛徽章:
0
3 [报告]
发表于 2016-03-31 17:30 |只看该作者
回复 2# elu_ligao

谢谢!不过运行的时候要报错啊,报错 Missing } .
   

论坛徽章:
0
4 [报告]
发表于 2016-04-01 13:10 |只看该作者
回复 2# elu_ligao

非常感谢!你的语句是正确的,可以实现我想要的输出。谢谢!


   

论坛徽章:
0
5 [报告]
发表于 2016-04-07 17:34 |只看该作者
回复 2# elu_ligao

比如一个test.csv中,有以下信息:
AB_1,CD_1,EF_1,GH_1,IJ_1,........   #每行有100个数据
AB_2,CD_2,EF_2,GH_2,IJ_2,........   #每行有100个数据
AB_3,CD_3,EF_3,GH_3,IJ_3,........   #每行有100个数据
AB_4,CD_4,EF_4,GH_4,IJ_3,........   #每行有100个数据
........,.......,.......,........,......,........
AB_n,CD_n,EF_n,GH_n,IJ_n,........

大神,再请教一下,如果test.csv文件中每一行的数据个数非常多,有100个数据。比如查找到AB_3,想要以数组的形式把AB_3所在行的这100个数据取出来,分别对应变量$1,$2,$3........$100以便后续处理,可以实现吗?
我试了试但是运行报错:
eval `awk -F',' '/AB_3/{print "set var[100]="$[100]";"}' csv`

请问这条语句是不是哪里有问题啊?
谢谢!

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
6 [报告]
发表于 2016-04-07 17:57 |只看该作者
本帖最后由 elu_ligao 于 2016-04-07 18:03 编辑

回复 5# 妈说多喝水
  1. eval ` awk -F',' '/AB_1/{$1=$1; print "set var = ("$0")"}'  csv`
复制代码
然后可以用 $var[n] 来读取, echo $var[1], $var[2]....

论坛徽章:
0
7 [报告]
发表于 2016-04-08 16:47 |只看该作者
回复 6# elu_ligao

谢谢!
大神,我才开始学习C shell,请问有什么C shell的学习书籍可以推荐吗?很多都是bash的资料,C shell的资料貌似很少啊。。谢谢。

论坛徽章:
29
程序设计版块每日发帖之星
日期:2016-02-29 06:20:0015-16赛季CBA联赛之天津
日期:2016-08-10 10:33:1115-16赛季CBA联赛之深圳
日期:2016-08-17 15:07:2015-16赛季CBA联赛之佛山
日期:2016-11-07 11:33:5015-16赛季CBA联赛之广夏
日期:2016-11-15 09:13:31CU十四周年纪念徽章
日期:2016-11-24 14:12:25极客徽章
日期:2016-12-07 14:03:4015-16赛季CBA联赛之深圳
日期:2016-12-07 17:15:2715-16赛季CBA联赛之北京
日期:2016-12-22 09:30:0115-16赛季CBA联赛之深圳
日期:2016-12-22 10:49:2115-16赛季CBA联赛之山西
日期:2017-02-10 09:05:3215-16赛季CBA联赛之同曦
日期:2017-02-27 14:19:08
8 [报告]
发表于 2016-04-08 16:51 |只看该作者
本帖最后由 elu_ligao 于 2016-04-08 16:51 编辑

回复 7# 妈说多喝水


    cshell 我用的也少, 变量定义也是临时搜的, 汗颜。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP