免费注册 查看新帖 |

Chinaunix

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

只更改文本的第一行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-13 09:38 |只看该作者 |倒序浏览
cat a.txt

col1 col2 col3
1  2  3
a  b  c
-------------------
修改后想得结果为
col1 col2 col3 col4 col5
1  2  3
a  b  c

我自己想的比较笨的方法是先head -1取第一行然后awk手动更改再用sed删除第一行再添加

有别的方法吗?我自己都觉得自己这方法不好

论坛徽章:
0
2 [报告]
发表于 2009-04-13 09:41 |只看该作者
直接用awk就可以了,BEGIN输出修改的第1行,后面的不输出第1行

论坛徽章:
0
3 [报告]
发表于 2009-04-13 09:42 |只看该作者
sed 直接能定位行

论坛徽章:
0
4 [报告]
发表于 2009-04-13 09:48 |只看该作者
[linuxboy823@fc8 ~]$ awk  '(NR==1){print $0,"col4 col5"}(NR>1)' a.txt  
col1 col2 col3 col4 col5
1  2  3
a  b  c


[linuxboy823@fc8 ~]$ sed  's/^c.*/& col4 col5/' a.txt
col1 col2 col3 col4 col5
1  2  3
a  b  c

[ 本帖最后由 linuxboy823 于 2009-4-13 09:52 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-04-13 09:49 |只看该作者
原帖由 linuxboy823 于 2009-4-13 09:48 发表
[linuxboy823@fc8 ~]$ awk  '(NR==1){print $0,"col4 col5"}(NR>1)' a.txt  
col1 col2 col3 col4 col5
1  2  3
a  b  c



这个思路很清晰,赞

论坛徽章:
0
6 [报告]
发表于 2009-04-13 09:49 |只看该作者
原帖由 justlooks 于 2009-4-13 09:41 发表
直接用awk就可以了,BEGIN输出修改的第1行,后面的不输出第1行

麻烦写下好伐 如果能不用head最好了

论坛徽章:
0
7 [报告]
发表于 2009-04-13 09:50 |只看该作者
原帖由 linuxboy823 于 2009-4-13 09:48 发表
[linuxboy823@fc8 ~]$ awk  '(NR==1){print $0,"col4 col5"}(NR>1)' a.txt  
col1 col2 col3 col4 col5
1  2  3
a  b  c

谢谢!!

论坛徽章:
0
8 [报告]
发表于 2009-04-13 09:50 |只看该作者

回复 #1 papokaka 的帖子

sed -i '1 s/^.*$/youstring/' a.sh

论坛徽章:
0
9 [报告]
发表于 2009-04-13 10:03 |只看该作者

回复 #8 youshuang 的帖子

直接
sed -i '1s/$/  col4 col5/' urfile
就可以了。

论坛徽章:
0
10 [报告]
发表于 2009-04-13 10:12 |只看该作者
  1. awk 'NR==1{$0=$0" col4 col5"}1' a.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP