分页: 1 / 2
[问题求助=已解决] 请问如何从文本提取多处字符串为另一文件重命名(保留空格显示)?
发表于 : 2012-01-24 14:21
由 Points
现有一可执行文件.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
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-24 18:21
由 eexpress
● 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
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-24 21:37
由 fnan
awk -F"|" '{sub(/\\[^_]+_/,"",$3);print $3 "_" $2 ".exe"}' Qsedlist
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-25 2:04
由 Points
下载一楼提供的附件:可实现GNOME MPlayer+Wine Qvod在线看电影了。。

附图:
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-25 2:48
由 rediscover
Mark一下
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-25 5:03
由 fnan
sed 's/^//g' # 这个有什么用?空格用"$t"解决,/号是表示目录的,不应该使用,必须处理掉。
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-25 12:05
由 Points
通过
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解压到用户任意目录即可使用
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-25 12:09
由 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不好区别

Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-25 14:36
由 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取值不了肖恩·康纳利
空格尼古拉斯·凯奇这样的文件名必须手工替换为肖恩·康纳利
&尼古拉斯·凯奇
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-26 0:06
由 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
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-26 5:01
由 fnan
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
# 加了空格处理。
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-26 5:19
由 fnan
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_ (没什么用)。
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-26 6:16
由 fnan
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
Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-26 19:19
由 Points
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
代码还是不支持显示空格主演: 肖恩·康纳利
空格尼古拉斯·凯奇
但是不带空格的可以 用。。谢谢

Re: [问题求助] 请问如何从文本提取多处字符串为另一文件重命名?
发表于 : 2012-01-26 19:22
由 Points
fnan 写了:awk -F"|" '{sub(/\\[^_]+_/,"",$3);gsub(" ","-",$3);print $3 "_" $2 ".exe"}'
可以用但是空格换成了-能不能不换就显示空格就好。。

麻烦乐!!