新足迹

 找回密码
 注册

精华好帖回顾

· [2800公里塔斯马尼亚自驾二十天探索之旅] 上部完。234楼新增虎公视频 (2009-5-8) Tiger_Karen · 日式pizza——Okonomiyaki(お好み焼き) (2010-2-2) edith921
· 写点卖车经历,回国前最后为车版做点贡献 (2013-1-31) look2046 · 街拍365 之五 (2013-7-4) JerryWu
Advertisement
Advertisement
查看: 1176|回复: 8

linux shell 怎么能把文件每行里的 x Min 变成 xx Secs [复制链接]

发表于 2012-2-17 12:37 |显示全部楼层
此文章由 neco 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 neco 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我的文件比如:
1 Secs
3 Min
5 Min

用linux的shell怎么把这个文件变成:
1 Secs
180 Secs
300 Secs
Advertisement
Advertisement

发表于 2012-2-17 13:11 |显示全部楼层
此文章由 coogee 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coogee 所有!转贴必须注明作者、出处和本声明,并保持内容完整
awk可以吧,非常的简单。

发表于 2012-2-17 13:14 |显示全部楼层
此文章由 neco 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 neco 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我对linux一窍不通。。。能帮我写个例子吗?
我可以用awk 计算数字,但是如何只转换有 Min 的行?怎么取得 Min前边的数字传给awk?

退役斑竹 2007 年度奖章获得者 2008年度奖章获得者 特殊贡献奖章 参与宝库编辑功臣

发表于 2012-2-17 13:16 |显示全部楼层
此文章由 黑山老妖 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 黑山老妖 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你这个难度比较大。
改成
1 Secs
3*60 Secs
5*60 Secs
可不可以?

发表于 2012-2-17 13:17 |显示全部楼层
此文章由 江苏小伙子 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 江苏小伙子 所有!转贴必须注明作者、出处和本声明,并保持内容完整
cat temp
1 Secs
3 Min
5 Min

awk '{ if ($2=="Min") print $1*60" Secs"; else print $0;}' temp
1 Secs
180 Secs
300 Secs

评分

参与人数 2积分 +10 收起 理由
黑山老妖 + 6 感谢分享
neco + 4 太感谢了!

查看全部评分

发表于 2012-2-17 13:33 |显示全部楼层
此文章由 neco 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 neco 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 黑山老妖 于 2012-2-17 13:16 发表
你这个难度比较大。
改成
1 Secs
3*60 Secs
5*60 Secs
可不可以?

不行。。。呵呵,不然就直接替换了。
Advertisement
Advertisement

发表于 2012-2-17 13:33 |显示全部楼层
此文章由 neco 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 neco 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 江苏小伙子 于 2012-2-17 13:17 发表
cat temp
1 Secs
3 Min
5 Min

awk '{ if ($2=="Min") print $1*60" Secs"; else print $0;}' temp
1 Secs
180 Secs
300 Secs


非常好用,谢谢!

发表于 2012-2-17 13:41 |显示全部楼层
此文章由 fnever 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 fnever 所有!转贴必须注明作者、出处和本声明,并保持内容完整
cat temp |sed "s/Min/*60/"|sed "s/Secs//"|perl -ne 'print eval($_)." Secs\n"'

评分

参与人数 1积分 +4 收起 理由
neco + 4 你的思路很独特。谢谢

查看全部评分

发表于 2012-2-19 19:32 |显示全部楼层
此文章由 nali 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 nali 所有!转贴必须注明作者、出处和本声明,并保持内容完整
  1. awk '{print /Min/?$1*60 " Secs":$0}' infile
复制代码
或者
  1. awk '/Min/{$0=$1*60 " Secs"}1' infile
复制代码

[ 本帖最后由 nali 于 2012-2-19 21:44 编辑 ]

评分

参与人数 1积分 +4 收起 理由
neco + 4 感谢分享

查看全部评分

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部