保留两个文件相同的行
时间:2011-03-02
来源:互联网
我的目的是搜索~/music下面的所有mp3文件,并显示出第一个mp3文件,我想用awk实现,因此我这样做:
结果是显示出了所有的mp3文件,我把 -F '^M' 改成 -F ' ' ,结果依旧,非常纳闷,我的感觉是:file这个变量里面有无数个mp3文件路径,每个路径占一行,那么只要用回车(^M)分割,就可以得到第一行,但结果不是这样,我试了下
结果显示的是一片mp3路径
先谢谢大家啦!
代码:
file=$(find ~/music -name *.mp3)
field=$(awk -F '^M' '{print $1}' "${file}")
field=$(awk -F '^M' '{print $1}' "${file}")
结果是显示出了所有的mp3文件,我把 -F '^M' 改成 -F ' ' ,结果依旧,非常纳闷,我的感觉是:file这个变量里面有无数个mp3文件路径,每个路径占一行,那么只要用回车(^M)分割,就可以得到第一行,但结果不是这样,我试了下
代码:
echo ${file}
结果显示的是一片mp3路径
代码:
1.mp3 2.mp3 3.mp3
中间只有空格,而我设想的结果应该是这样的
代码:
1.mp3
2.mp3
3.mp3
我非常奇怪,find找到的东西不是一行一行的吗?怎么echo后居然变成以空格分割了?以空格分割也行,但是-F ' '不管用,为什么,我的代码错在哪里呢?2.mp3
3.mp3
先谢谢大家啦!
作者: NewUserFF 发布时间: 2011-03-02
NewUserFF 写道:
我非常奇怪,find找到的东西不是一行一行的吗?怎么echo后居然变成以空格分割了?
你没加引号shell自然不会分行显示
代码:
echo "${file}"
实际上你的问题是在于没有弄清楚awk中Records和Fields的概念,所以你再怎么通过-F设置Fields,仍然是将换行符作为每个记录的分隔符
还有就是你该用 echo xxx| awk这种方式,awk xxx这种方式是处理xxx这个文件
代码:
field=$(echo "${file}" | awk 'BEGIN{RS="";FS="\n"}{print $1}')
最后一点是,find ~/music -name *.mp3 | head -1 不就完事了吗
作者: astolia 发布时间: 2011-03-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28