Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash脚本从linux中的文本文件导出信息_Bash_File_Edit - Fatal编程技术网

使用bash脚本从linux中的文本文件导出信息

使用bash脚本从linux中的文本文件导出信息,bash,file,edit,Bash,File,Edit,我有一个具体的文件: Client 1: MAC 00:03:52:49:99:55 First : Fri Nov 7 09:50:11 2014 Last : Fri Nov 7 09:51:06 2014 -- Client 1: MAC 00:03:52:04:88:55 First : Fri Nov 7 09:51:44 2014 Last : Fri Nov 7 09:51:44 2014 -- Client 2: M

我有一个具体的文件:

Client 1: MAC 00:03:52:49:99:55
 First      : Fri Nov  7 09:50:11 2014
 Last       : Fri Nov  7 09:51:06 2014
--
 Client 1: MAC 00:03:52:04:88:55
 First      : Fri Nov  7 09:51:44 2014
 Last       : Fri Nov  7 09:51:44 2014
--
 Client 2: MAC 00:03:52:49:99:55
 First      : Fri Nov  7 10:50:10 2014
 Last       : Fri Nov  7 10:50:10 2014
--
 Client 3: MAC 00:03:52:04:66:55
 First      : Fri Nov  7 09:51:30 2014
 Last       : Fri Nov  7 09:51:30 2014
--
从包含许多重复项的此文件创建如下新文件:

00:03:52:49:99:55
First      : Fri Nov  7 09:50:11 2014
Last       : Fri Nov  7 09:51:06 2014
First      : Fri Nov  7 09:50:11 2014
Last       : Fri Nov  7 09:51:06 2014
00:03:52:04:88:55
First      : Fri Nov  7 09:51:44 2014
Last       : Fri Nov  7 09:51:44 2014
00:03:52:04:66:55
First      : Fri Nov  7 09:51:30 2014
Last       : Fri Nov  7 09:51:30 2014
如何使用Bash脚本搜索带有For循环的文件?重要的是,循环对MAC地址的输入不能超过1个。MAC应该是唯一的

是的,我一整天都在尝试:/

#!/bin/bash
array=$(cat Kismet-20141107-09-48-19-1.nettxt | grep Client -A 3 | grep -v Manuf)
echo "Array size: ${#array[@]}"
echo "Array items:"
for item in ${array[*]}
    do
    if [ $item -eq 3 ]; then
         echo "$array[$item]"
    fi
done
不,使用bash不是必需的。。如果你有其他工具,我会试试

试试这个:

Shell> cat test1
#!/bin/bash

MACS=(`grep Client file|awk '{print $4}'|sort|uniq|xargs`)

for i in `echo ${MACS[*]}`; do
        echo $i
        grep $i file -A 2 | grep -vE 'MAC|--'
done
Shell> cat file
Client 1: MAC 00:03:52:49:99:55
 First      : Fri Nov  7 09:50:11 2014
 Last       : Fri Nov  7 09:51:06 2014
--
 Client 1: MAC 00:03:52:04:88:55
 First      : Fri Nov  7 09:51:44 2014
 Last       : Fri Nov  7 09:51:44 2014
--
 Client 2: MAC 00:03:52:49:99:55
 First      : Fri Nov  7 10:50:10 2014
 Last       : Fri Nov  7 10:50:10 2014
--
 Client 3: MAC 00:03:52:04:66:55
 First      : Fri Nov  7 09:51:30 2014
 Last       : Fri Nov  7 09:51:30 2014
--
输出:

Shell> ./test1
00:03:52:04:66:55
 First      : Fri Nov  7 09:51:30 2014
 Last       : Fri Nov  7 09:51:30 2014
00:03:52:04:88:55
 First      : Fri Nov  7 09:51:44 2014
 Last       : Fri Nov  7 09:51:44 2014
00:03:52:49:99:55
 First      : Fri Nov  7 09:50:11 2014
 Last       : Fri Nov  7 09:51:06 2014
 First      : Fri Nov  7 10:50:10 2014
 Last       : Fri Nov  7 10:50:10 2014

你自己试过什么吗?你有什么特别的事吗?您是否需要使用本机bash功能来执行此操作,或者是否可以使用awk之类的工具?