分页: 1 / 1

shell如何一次读一行?

发表于 : 2010-01-21 10:26
magic1136
我有一个ip.log文件
我想写一个shell脚本,一次读取ip.log文件的一行
请问要怎么写?

Re: shell如何一次读一行?

发表于 : 2010-01-21 10:32
cnkilior

代码: 全选

while read i;do
echo $i
done <<YOUR_FILE

Re: shell如何一次读一行?

发表于 : 2010-01-21 10:34
eexpress
分析log? 那通常用bash是折腾。换其他的脚本吧。

Re: shell如何一次读一行?

发表于 : 2010-01-21 10:45
magic1136
eexpress 写了:分析log? 那通常用bash是折腾。换其他的脚本吧。
对阿对啊

那你有什么好推荐的吗?
我只是觉得用shell的话比用c++强多了

Re: shell如何一次读一行?

发表于 : 2010-01-21 10:47
eexpress
比c++强的。是perl
尤其涉及到分析文本。那就是perl的专长。

Re: shell如何一次读一行?

发表于 : 2010-01-21 10:48
magic1136
cnkilior 写了:

代码: 全选

while read i;do
echo $i
done <<YOUR_FILE

代码: 全选

  1 while read ip;do
  2 echo $ip
  3 done <<'ip.log'
./test.sh: line 3: warning: here-document at line 3 delimited by end-of-file (wanted `ip.log')

Re: shell如何一次读一行?

发表于 : 2010-01-21 11:11
keky
while read i;do
echo $i
done < YOUR_FILE

Re: shell如何一次读一行?

发表于 : 2010-01-21 11:13
xiooli

代码: 全选

with open('your_file') as f:
    line = f.readline().strip()
    blabla...
python

Re: shell如何一次读一行?

发表于 : 2010-01-21 11:31
magic1136
我写好了

代码: 全选

1 #! /bin/sh
2 # [email protected]
3 getiplist()
4 {
5         URL="http://192.168.1.191/iptv.php"
6         echo [$URL]
7         wget $URL -O ip.log
8 }
9
10 setcommands(){
11         command0="cd /"
12         command1="rm -rf /A6emenu.tgz"
13         command2="/emenu/shelldir/kill.sh"
14         command3="mv /emenu /bak.emenu"
15         command4="wget --ftp-user=test --ftp-password=test ftp://192.168.1.109/A6emenu.tgz"
16         command5="tar zxvf /A6emenu.tgz"
17         command6="/emenu/update.sh > /update.log"
18         command7="cp /bak.emenu/etc/* /emenu/etc/ -rf"
19 }
20
21 createfile(){
22         INPUT="commands"
23         OUTPUT="out.log"
24         rm -rf $INPUT
25         mknod $INPUT p
26         exec 3<>$OUTPUT
27         exec 4<>$INPUT
28 }
29
30 autotelnet(){
31         telnet $IP <&4 >&3 &
32         echo $command0 > $INPUT
33         echo $command1 > $INPUT
34         echo $command2 > $INPUT
35         echo $command3 > $INPUT
36         echo $command4 > $INPUT
37         echo $command5 > $INPUT
38         echo $command6 > $INPUT
39         echo $command7 > $INPUT
40         echo "exit" > $INPUT
41 }
42 printmessage(){
43         tail -f $OUTPUT &
44 }
45
46 loopscript(){
47         while read IP;do
48         IP="$IP 1234"
49         echo "start telnet ...  {$IP} please wait"
50        autotelnet
51         done < "ip.log"
52 }
53
54 getiplist
55 setcommands
56 createfile
57 printmessage
58 loopscript 

Re: shell如何一次读一行?

发表于 : 2010-01-21 22:30
nelsonie
用什么不重要,能实现就行

Re: shell如何一次读一行?

发表于 : 2010-01-21 22:32
BigSnake.NET
又见ee卖广告

Re: shell如何一次读一行?

发表于 : 2010-01-21 23:44
xiooli
其实分析这种数据用 awk 最好。

Re: shell如何一次读一行?

发表于 : 2010-01-22 1:08
anticlockwise
我同意EE,觉得PERL在这种情况下比较好……

Re: shell如何一次读一行?

发表于 : 2010-01-22 9:01
t3swing
搞个文本分析还要学那么多种语言

Re: shell如何一次读一行?

发表于 : 2010-01-22 18:23
anticlockwise
t3swing 写了:搞个文本分析还要学那么多种语言
搞个文本分析的确要知道挺多种语言的……