sh/bash/dash/ksh/zsh等Shell脚本
-
mad_frog
- 帖子: 55
- 注册时间: 2011-06-29 11:26
#1
帖子
由 mad_frog » 2011-06-29 11:33
大家好,我有一个文本文件file1.txt内容为:
Bishop/fhsalfhsl
Bishop/KFXBishop
Bishop/test1
Relay/test1
Relay/test2
Server/Maps/DF-ShuangShiZhenChengLou.ut2
Server/Maps/YL_KeYanSuo.ut2
Server/Maps/DF-ZhanShuXiaoWu.ut2
Realmz2/krealmlib.so
Realmz2/lottery.csv
Realmz2/UsePro.csv
想实现效果 ,并保存到file2.txt中
/home/A/fhsalfhsl
/home/A/KFXBishop
/home/A/test1
/home/A/test1
/home/A/test2
/home/A/Server/Maps/DF-ShuangShiZhenChengLou.ut2
/home/A/Server/Maps/YL_KeYanSuo.ut2
/home/A/Server/Maps/DF-ZhanShuXiaoWu.ut2
/home/A/Realmz2/krealmlib.so
/home/A/Realmz2/lottery.csv
/home/A/Realmz2/UsePro.csv
原文远不止这些内容,大家有什么好的实现方法,谢谢大家了!!
-
lubcat
- 帖子: 2061
- 注册时间: 2010-09-27 12:59
#2
帖子
由 lubcat » 2011-06-29 11:36
哦。看差了。
听lx的~~
上次由
lubcat 在 2011-06-29 11:40,总共编辑 1 次。
生活里,有很多转瞬即逝,像在车站的告别,刚刚还相互拥抱,转眼已各自天涯。很多时候,你不懂,我也不懂,就这样,说着说着就变了,听着听着就倦了,看着看着就厌了,跟着跟着就慢了,走着走着就散了,爱着爱着就淡了,想着想着就算了。
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#3
帖子
由 eexpress » 2011-06-29 11:37
● cat tmp |sed -e 's/^Bishop/\/home\/A/g' -e 's/^Relay/\/home\/A/g' -e 's/^Server/\/home\/\A\/Server/g' -e 's/^Realmz2/\/home\/A\/Realmz2/g'
没细化的。简单实现。
● 鸣学
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#4
帖子
由 eexpress » 2011-06-29 11:38
● cat tmp |sed -e 's/^Bishop/\/home\/A/g' -e 's/^Relay/\/home\/A/g' -e 's/^\(Server\|Realmz2\)/\/home\/\A\/\1/g'
● 鸣学
-
eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
#5
帖子
由 eexpress » 2011-06-29 11:39
● cat tmp |sed -e 's/^\(Bishop\|Relay\)/\/home\/A/g' -e 's/^\(Server\|Realmz2\)/\/home\/\A\/\1/g'
● 鸣学
-
mad_frog
- 帖子: 55
- 注册时间: 2011-06-29 11:26
#6
帖子
由 mad_frog » 2011-06-29 11:41
能给判断吗,要是我前面的两种情况有很多呢,那不得写疯了
-
fnan
- 帖子: 919
- 注册时间: 2009-07-01 22:04
#7
帖子
由 fnan » 2011-06-30 11:19
sed -e 's#^(Bishop/|Relay/)##' -e 's#^#/home/A/#' file1.txt > file2.txt
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
sk1418
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
-
联系:
#8
帖子
由 sk1418 » 2011-06-30 22:36
awk的
代码: 全选
awk -F'/' 'BEGIN{h="/home/A"; OFS="/"} {$1=$1~/^(B|Rel)/?h:h"/"$1; print $0}' file1.txt
要是你前面两种情况非常。把那些情况放另一个文件里,awk多读一个文件判断一下就行了
---
regards,
Kent
-
link_01
- 帖子: 1024
- 注册时间: 2008-11-05 13:24
#9
帖子
由 link_01 » 2011-07-09 11:17
代码: 全选
sed -r '/^Server|Realmz2/s#^#/home/A/#; s#^\w+#/home/A#' tmp.txt
就是不知道大量文本时有没有匹配错误的
笔记
-------------------------------------
http://blog.163.com/wqt_1101