分页: 2 / 2

发表于 : 2008-03-14 19:44
BigSnake.NET
遇到一个小小的困难....

发表于 : 2008-03-14 19:45
eexpress
无聊了。没通用性的问题,也讨论。自己搞吧,一堆管道。我给个例子。

代码: 全选

☎  cat auto-pic.bash 
#!/bin/bash

[ -z "$1" ] && echo "需要指定搜索的日期。" && exit;
cd /home/media/restricted-picture/

for i in 1 2 3 4 5
do
wget -nc --no-cookies http://www.xx.net/bbs/forumdisplays_22_1000_desc_lastpost_30_$i.html -O $i.htm
cat $i.htm|tr '>' '\n'|tr '"' '\n'|grep "^[0-9][0-9]-\|^show.*html"|sed "s/\ [0-9][0-9]:.*$//"|tr '\n' ','|sed s/,[^,]*[0-9],s/\\ns/g|grep $1>$i-$1.lst
done

cat *-$1.lst|sed s/l,[0-9][^l]*$/l/g|sed s/^s[^,]*,//|tr , '\n'|sed s/^/http:\\/\\/www.imagegarden.net\\/bbs\\//>$1.list
rm *.htm *.lst *.html
wget -nc -i $1.list
rm *.list

for i in *.html

发表于 : 2008-03-14 19:49
BigSnake.NET

代码: 全选

tr '\n' '\0' |perl -pe "s@<(T\d+)>.*</\1>@@g"|tr '\0' '\n'
sed 不能跨行~...

发表于 : 2008-03-14 20:07
iblicf
谁说不能 N n

发表于 : 2008-03-14 20:12
BigSnake.NET
iblicf 写了:谁说不能 N n
举一个..

发表于 : 2008-03-14 20:50
iblicf
我不知道你要干么,怎么举?

比如吧,, sed 'n;n;n;G' file 隔三行+空行

发表于 : 2008-03-15 11:53
BigSnake.NET

代码: 全选

title: test
foo<T1>bar
123
bar</T1>
Tag for T1 is 123
barfoo<T2>bar
321
foobar</T2>bar
去掉<T\d></T\d>标签内的内容, 跨行

发表于 : 2008-03-15 12:02
eexpress
跨行不好的。改那FS什么的环境变量。主要是脚本结束的时候,不知道如何写恢复的。
所以,还是tr替换掉/n好些。搞完,再替换回来。

发表于 : 2008-03-15 12:04
BigSnake.NET
eexpress 写了:跨行不好的。改那FS什么的环境变量。主要是脚本结束的时候,不知道如何写恢复的。
所以,还是tr替换掉/n好些。搞完,再替换回来。
问题就在这里
替换什么?

我试过 \0 , 可是sed不行..

发表于 : 2008-03-15 12:23
eexpress
头天不是说过了。找一个特殊的字符而已。我的情况,就用,逗号。只要和原始关键字符不冲突的,无关紧要的,就可以。就是17楼的tr ,的写法。你甚至可以替换成●啊。只要原文不用的。

改成\\n都可以的哦。


那环境变量的,以前搞好久,不舒服的,没找到缺省的写法,导致不能恢复,如果不恢复,有些龌龊的。你也可以研究下。

发表于 : 2008-03-15 12:25
BigSnake.NET
eexpress 写了:头天不是说过了。找一个特殊的字符而已。我的情况,就用,逗号。只要和原始关键字符不冲突的,无关紧要的,就可以。就是17楼的tr ,的写法。你甚至可以替换成●啊。只要原文不用的。

改成\\n都可以的哦。


那环境变量的,以前搞好久,不舒服的,没找到缺省的写法,导致不能恢复,如果不恢复,有些龌龊的。你也可以研究下。
那你怎么知道哪个字符原文没有用过?

发表于 : 2008-03-15 12:39
eexpress
我的●,\\n这些,基本不会出现。随便搞一个utf8里面的中文符号也可以。那不,你试试☎

发表于 : 2008-03-16 19:24
caike
I just posted the solution I used, thank you so much.
especially, BigSnake.NET and iblicf :D