sh/bash/dash/ksh/zsh等Shell脚本
-
Points
- 帖子: 83
- 注册时间: 2010-02-19 16:13
#1
帖子
由 Points » 2012-01-24 14:21
现有一可执行文件.Qsed.exe和文本文件Qsedlist内容:
代码: 全选
qvod://340102707|F067D1817B9D47B77B34AC307BD632173C7DC39B|钱多多嫁人记_01-HDTV无水印.rmvb|
qvod://242026324|831FFD9E706292A883259BC2D10AE23FA3E41858|\u671D\u6BD4\u5948\u308B\u3044(\u4E2D\u6587\u5B57\u5E55)_钱多多嫁人记_02-HDTV无水印.mkv|
通过shell脚本:
代码: 全选
#!/bin/sh
awk -F"|" '{print $2}' Qsedlist | sed 's/^/Qsed.rmvb_/g' | while read t;do cp Qsed.exe $t.exe;done
能获得:
代码: 全选
Qsed.rmvb_F067D1817B9D47B77B34AC307BD632173C7DC39B.exe
Qsed.rmvb_831FFD9E706292A883259BC2D10AE23FA3E41858.exe
现在想获得的文件名为:
代码: 全选
钱多多嫁人记_01-HDTV无水印.rmvb_F067D1817B9D47B77B34AC307BD632173C7DC39B.exe
钱多多嫁人记_02-HDTV无水印.mkv_831FFD9E706292A883259BC2D10AE23FA3E41858.exe
求大牛修改,谢谢!!
代码: 全选
#!/bin/sh
cat Qsedlist |perl -e 'while (<STDIN>){@_=split "\\\|",$_; print "$_[2]_$_[1].exe\n";}' | sed 's/^//g' | while read t;do cp .Qsed.exe $t;done
代码: 全选
#!/bin/sh
awk -F"|" '{sub(/\\[^_]+_/,"",$3);print $3 "_" $2 ".exe"}' QiAVlist | sed 's/^//g' | while read t;do cp .Qsed.exe $t;done
代码: 全选
#!/bin/sh
cat QMVlist |awk -F"|" '{print $3 "_" $2 ".exe"}' | sed 's/^//g' | while read t;do cp .Qsed.exe $t;done
三种代码都能实现功能但对字符串中的空格和/号等不能处理。
最新请看:
http://forum.ubuntu.com.cn/viewtopic.ph ... 5#p2620507
-
附件
-
- QvodDownload.7z
- (458.13 KiB) 已下载 37 次
上次由
Points 在 2012-01-26 23:24,总共编辑 5 次。
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#2
帖子
由 eexpress » 2012-01-24 18:21
● cat Qsedlist |perl -e 'while (<STDIN>){@_=split "\\\|",$_; print "$_[2]_$_[1].exe\n";}'
钱多多嫁人记_01-HDTV无水印.rmvb_F067D1817B9D47B77B34AC307BD632173C7DC39B.exe
朝比奈るい(中文字幕)_钱多多嫁人记_02-HDTV无水印.mkv_831FFD9E706292A883259BC2D10AE23FA3E41858.exe
awk当然也可以。只是如果有特殊情况,没那么灵活而已。
● cat Qsedlist |awk -F"|" '{print $3_$2".exe"}'
钱多多嫁人记_01-HDTV无水印.rmvbF067D1817B9D47B77B34AC307BD632173C7DC39B.exe
朝比奈るい(中文字幕)_钱多多嫁人记_02-HDTV无水印.mkv831FFD9E706292A883259BC2D10AE23FA3E41858.exe
● 鸣学
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#3
帖子
由 fnan » 2012-01-24 21:37
awk -F"|" '{sub(/\\[^_]+_/,"",$3);print $3 "_" $2 ".exe"}' Qsedlist
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
Points
- 帖子: 83
- 注册时间: 2010-02-19 16:13
#4
帖子
由 Points » 2012-01-25 2:04
下载一楼提供的附件:可实现GNOME MPlayer+Wine Qvod在线看电影了。。

附图:
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#6
帖子
由 fnan » 2012-01-25 5:03
sed 's/^//g' # 这个有什么用?空格用"$t"解决,/号是表示目录的,不应该使用,必须处理掉。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
Points
- 帖子: 83
- 注册时间: 2010-02-19 16:13
#7
帖子
由 Points » 2012-01-25 12:05
通过
ScriptNo插件
在网络上取得类
代码: 全选
qvod://710496552|994AEB4832BC76C5BCD56A08E0BD167CD9A6C638|极速60秒-主演:尼古拉斯·凯奇&安吉丽娜·朱莉-BDRip.rmvb|
链接写入Qsedlist
如
http://www.qvod.ws/play/?25956-0-1.html页面源代码中86行可取得DVD版链接
代码: 全选
qvod://624106932|D0D380A0C5227C6D99FDA98DC439C09127D449C8|\u52A0\u52D2\u6BD4\u6D77\u76D74\uFF1A\u964C\u751F\u7684\u6F6E\u6C50DVD\u4E2D\u5B57.rmvb|
和BD版链接
代码: 全选
qvod://570813088|095296C1736BF528FD0DC6F1F1A53AFB8A4A9386|\u52A0\u52D2\u6BD4\u6D77\u76D74\uFF1A\u60CA\u6D9B\u602A\u6D6ABD\u4E2D\u82F1\u53CC\u8BED\u5B57\u5E55.rmvb|
可手工修改为
代码: 全选
qvod://570813088|095296C1736BF528FD0DC6F1F1A53AFB8A4A9386|加勒比海盗4-BD.rmvb|
写入Qsedlist文本保存。运行QvodDownload (Qsed)脚本
代码: 全选
#!/bin/sh
mkdir ../Qsedcat Qsedlist |perl -e 'while (<STDIN>){@_=split "\\\|",$_; print "$_[2]_$_[1].exe\n";}' | while read t;do cp .Qsed.exe ../Qsed/$t;done
会将
.Qsed.exe复制并重命名为
../Qsed/代码: 全选
加勒比海盗4-BD.rmvb_095296C1736BF528FD0DC6F1F1A53AFB8A4A9386.exe
运行此exe文件可生成下载文件
加勒比海盗4-BD.rmvb.!qd等此文件下载缓冲一会后就可以用GNOME MPlayer播放。。边下边播不用虚拟机哦。。现求大牛修改成浏览器脚本能自动取得播放链接并按如上格式复制重命名
.Qsed.exe运行,谢谢!!
PS:最好能自动调用GNOME MPlayer播放。。^_^
附图:
下载QvodDownload.7z解压到用户任意目录即可使用
-
附件
-
- QvodDownload.7z
- (458.13 KiB) 已下载 30 次
上次由
Points 在 2012-01-25 17:19,总共编辑 2 次。
-
Points
- 帖子: 83
- 注册时间: 2010-02-19 16:13
#8
帖子
由 Points » 2012-01-25 12:09
fnan 写了:sed 's/^//g' # 这个有什么用?空格用"$t"解决,/号是表示目录的,不应该使用,必须处理掉。
我不清楚sed 's/^//g' 是做什么的只知道单独使用您的代码不能生成可执行文件,但把您的代码替换掉原脚本作者的
http://www.oschina.net/code/snippet_131936_7628代码: 全选
#!/bin/sh
awk -F"|" '{print $2}' list | sed 's/^/1.rmvb_/g' | while read t;do cp 1.exe $t.exe;done
部分后除了空格不能处理一切都好

PS:原作者的脚本运行后生成的全是1.rmvb_xxxxxx.exe不好区别

-
Points
- 帖子: 83
- 注册时间: 2010-02-19 16:13
#9
帖子
由 Points » 2012-01-25 14:36
fnan 写了:sed 's/^//g' # 这个有什么用?空格用"$t"解决,/号是表示目录的,不应该使用,必须处理掉。
又试了试
代码: 全选
#!/bin/sh
mkdir ../QiAV
awk -F"|" '{sub(/\\[^_]+_/,"",$3);print $3 "_" $2 ".exe"}' QiAVlist | while read t;do cp .Qsed.exe ../QiAV/$t;done
可用

但是如
代码: 全选
qvod://653125941|BA38479EE7BFBA8B4EAB68F648972889AC2D5462|勇闯夺命岛(石破天惊)-主演:肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb|
这样的$3取值不了肖恩·康纳利
空格尼古拉斯·凯奇这样的文件名必须手工替换为肖恩·康纳利
&尼古拉斯·凯奇
-
josephyoung
- 帖子: 158
- 注册时间: 2011-11-05 18:53
- 来自: 南极圈
#10
帖子
由 josephyoung » 2012-01-26 0:06
代码: 全选
sed 's/^[^|]*|\([^|]*\)|\(.*\)|/\2_\1.exe/' Qsedlist
代码: 全选
[joe@joe-laptop test]$ sed 's/^[^|]*|\([^|]*\)|\(.*\)|/\2_\1.exe/' <<< "qvod://653125941|BA38479EE7BFBA8B4EAB68F648972889AC2D5462|勇闯夺命岛(石破天惊)-主演: 肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb|"
勇闯夺命岛(石破天惊)-主演:肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb_BA38479EE7BFBA8B4EAB68F648972889AC2D5462.exe
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#11
帖子
由 fnan » 2012-01-26 5:01
Points 写了:fnan 写了:sed 's/^//g' # 这个有什么用?空格用"$t"解决,/号是表示目录的,不应该使用,必须处理掉。
又试了试
代码: 全选
#!/bin/sh
mkdir ../QiAV
awk -F"|" '{sub(/\\[^_]+_/,"",$3);print $3 "_" $2 ".exe"}' QiAVlist | while read t;do cp .Qsed.exe ../QiAV/$t;done
可用

但是如
代码: 全选
qvod://653125941|BA38479EE7BFBA8B4EAB68F648972889AC2D5462|勇闯夺命岛(石破天惊)-主演:肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb|
这样的$3取值不了肖恩·康纳利
空格尼古拉斯·凯奇这样的文件名必须手工替换为肖恩·康纳利
&尼古拉斯·凯奇
echo -e "qvod://340102707|F067D1817B9D47B77B34AC307BD632173C7DC39B|钱多多嫁人记_01-HDTV无水印.rmvb|\nqvod://242026324|831FFD9E706292A883259BC2D10AE23FA3E41858|\u671D\u6BD4 \u5948\u308B\u3044(\u4E2D\u6587\u5B57\u5E55)_钱多多嫁人记_02-HDTV无水印.mkv|\nqvod://653125941|BA38479EE7BFBA8B4EAB68F648972889AC2D5462|勇闯夺命岛(石破天惊)-主演:肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb|"|
awk -F"|" '{sub(/\\[^_]+_/,"",$3);gsub(" ","-",$3);print $3 "_" $2 ".exe"}'
钱多多嫁人记_01-HDTV无水印.rmvb_F067D1817B9D47B77B34AC307BD632173C7DC39B.exe
钱多多嫁人记_02-HDTV无水印.mkv_831FFD9E706292A883259BC2D10AE23FA3E41858.exe
勇闯夺命岛(石破天惊)-主演:
肖恩·康纳利-尼古拉斯·凯奇-BDRip.rmvb_BA38479EE7BFBA8B4EAB68F648972889AC2D5462.exe
# 加了空格处理。
上次由
fnan 在 2012-01-26 6:19,总共编辑 2 次。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#12
帖子
由 fnan » 2012-01-26 5:19
Points 写了:fnan 写了:sed 's/^//g' # 这个有什么用?空格用"$t"解决,/号是表示目录的,不应该使用,必须处理掉。
我不清楚sed 's/^//g' 是做什么的只知道单独使用您的代码不能生成可执行文件,但把您的代码替换掉原脚本作者的
http://www.oschina.net/code/snippet_131936_7628代码: 全选
#!/bin/sh
awk -F"|" '{print $2}' list | sed 's/^/1.rmvb_/g' | while read t;do cp 1.exe $t.exe;done
部分后除了空格不能处理一切都好

PS:原作者的脚本运行后生成的全是1.rmvb_xxxxxx.exe不好区别

| sed 's/^/1.rmvb_/g' #这个只是前面一律加上 1.rmvb_ (没什么用)。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#13
帖子
由 fnan » 2012-01-26 6:16
echo -e "qvod://340102707|F067D1817B9D47B77B34AC307BD632173C7DC39B|钱多多嫁人记_01-HDTV无水印.rmvb|\nqvod://242026324|831FFD9E706292A883259BC2D10AE23FA3E41858|\u671D\u6BD4 \u5948\u308B\u3044(\u4E2D\u6587\u5B57\u5E55)_钱多多嫁人记_02-HDTV无水印.mkv|\nqvod://653125941|BA38479EE7BFBA8B4EAB68F648972889AC2D5462|勇闯夺命岛(石破天惊)-主演:肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb|"| sed -r 's/^[^|]+\|([^|]+)\|(\\[^_]+_)?([^|]+)\|/\3_\1.exe/;s/ /-/g'
钱多多嫁人记_01-HDTV无水印.rmvb_F067D1817B9D47B77B34AC307BD632173C7DC39B.exe
钱多多嫁人记_02-HDTV无水印.mkv_831FFD9E706292A883259BC2D10AE23FA3E41858.exe
勇闯夺命岛(石破天惊)-主演:肖恩·康纳利-尼古拉斯·凯奇-BDRip.rmvb_BA38479EE7BFBA8B4EAB68F648972889AC2D5462.exe
#sed
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
Points
- 帖子: 83
- 注册时间: 2010-02-19 16:13
#14
帖子
由 Points » 2012-01-26 19:19
josephyoung 写了:代码: 全选
sed 's/^[^|]*|\([^|]*\)|\(.*\)|/\2_\1.exe/' Qsedlist
代码: 全选
[joe@joe-laptop test]$ sed 's/^[^|]*|\([^|]*\)|\(.*\)|/\2_\1.exe/' <<< "qvod://653125941|BA38479EE7BFBA8B4EAB68F648972889AC2D5462|勇闯夺命岛(石破天惊)-主演: 肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb|"
勇闯夺命岛(石破天惊)-主演:肖恩·康纳利 尼古拉斯·凯奇-BDRip.rmvb_BA38479EE7BFBA8B4EAB68F648972889AC2D5462.exe
代码: 全选
sed 's/^[^|]*|\([^|]*\)|\(.*\)|/\2_\1.exe/' Qsedlist
代码还是不支持显示空格主演: 肖恩·康纳利
空格尼古拉斯·凯奇
但是不带空格的可以 用。。谢谢

-
Points
- 帖子: 83
- 注册时间: 2010-02-19 16:13
#15
帖子
由 Points » 2012-01-26 19:22
fnan 写了:awk -F"|" '{sub(/\\[^_]+_/,"",$3);gsub(" ","-",$3);print $3 "_" $2 ".exe"}'
可以用但是空格换成了-能不能不换就显示空格就好。。

麻烦乐!!