免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2640 | 回复: 6
打印 上一主题 下一主题

[文本处理] 对脚本读取的字符串进行操作 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-28 14:52 |只看该作者 |倒序浏览
有一个文本替换脚本,a.sh,运行时只要./a.sh filename就可以对filename这个文件进行相应文本替换操作,但是由于filename文件名过长,处理后还要加后缀,文件显得十分啰嗦,想请教一下各位大神,该如何对我读入的filename进行简单的字符串操作。

比如我现在的脚本是:
#! /bin/sh
file=$1
sed xxxxx $file
awk xxxxx $file $file.txt
awk xxxxx $file.txt $file.ma
...
exit

如果我的文件是P1233.sp.hsp.lis.ac0,那么处理后最终文件就是P1233.sp.hsp.lis.ac0.ma

我现在想把filename读入后,在脚本中进行一些简单的字符串操作,比如只保留.分隔的第一个字符串,剩下的命令就用这个字符串当做文件名进行操作。

这样如果如果我的文件是P1233.sp.hsp.lis.ac0,那么处理后最终文件就是P1233.ma,请问该如何操作。

我用字符串命令最后似乎都是操作到文件上了。。。。

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
2 [报告]
发表于 2015-04-28 15:10 |只看该作者
  1. ~$ file="P1233.sp.hsp.lis.ac0"
  2. ~$ echo $file
  3. P1233.sp.hsp.lis.ac0
  4. ~$ echo ${file%%.*}
  5. P1233
复制代码

论坛徽章:
0
3 [报告]
发表于 2015-04-28 15:17 |只看该作者
回复 2# cao627


    如果写在脚本里面应该怎么弄呢,比如将file的第一个字节赋给name这个变量

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
4 [报告]
发表于 2015-04-29 09:48 |只看该作者
P1233.sp.hsp.lis.ac0 到底是文件名,还是文件内容@luobingyin

论坛徽章:
0
5 [报告]
发表于 2015-05-08 11:15 |只看该作者
回复 4# cao627


    是一个文件名,我想做的就是写一个脚本对这个文件进行重命名,新的文件名中有一部分旧文件名中的信息。

比如:文件名是P1233.sp.hsp.lis.ac0

通过运行脚本 rename P1233.sp.hsp.lis.ac0

将这个文件重命名为P1233.sp.ma

不知道说清楚没有,不胜感激~

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
6 [报告]
发表于 2015-05-08 11:28 |只看该作者
回复 5# luobingyin


    rename $file ${file%%.*}.ma


...

上面说的是P1233.ma,怎么到这又是P1233.xx.ma了

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
7 [报告]
发表于 2015-05-10 19:46 |只看该作者
  1. a=`echo $1 | awk -F'.' '{print $1".ma"}'`
  2. mv $1 $a
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP