当前位置:  技术问答>linux和unix

shell在文件行末尾加字符过滤空行和注释的问题

    来源: 互联网  发布时间:2017-03-21

    本文导语:  各位,请教大家一个问题: 一个文件,里面有注释(#注释)和空行,我要在文件的每一行末尾加上一些字符,但是注释行和空行不加。要怎么过滤? 我使用这两种办法,都可以加,但是无法得到想要的结果: awk '{p...

各位,请教大家一个问题:
一个文件,里面有注释(#注释)和空行,我要在文件的每一行末尾加上一些字符,但是注释行和空行不加。要怎么过滤?
我使用这两种办法,都可以加,但是无法得到想要的结果:
awk '{print $0,"abc"}' tt.txt > t.txt  //无法过滤注释行和空行。
cat tt.txt | grep -v '^#' | grep -v '^$' | awk '{print $0,"abx"}' > t.txt//这样是过滤了,但是注释行和空行没了。

请问各位,要怎么做才达到效果:不在注释行和空行后面加,又要保留注释行和空行。

谢谢

|
awk的功能非常强大,只需使用这一个命令就可以实现。
awk '{if((NF != 0) && ($0 !~ /^#/)) $0 = $0" [my addition]"} {print $0}' source.txt > destination.txt
其中蓝色部分修改为需要添加的字符串。



以下内容仅是本人在尝试解决楼主需求的过程中所想到的问题,在此写出,仅作笔记。
根据楼主的需求,我还想到了一些比较特殊的情况,比如source.txt文件中的内容如下所示:
123
!@#
abc

#lksdjfklsdf
######adkj

[ ]123
[t]9089
[ ][t][ ]0987098
[t][ ][t]lkdlsjf

[ ]#dsklfsdkljfkldsjfklsdjjdfddddddddfff
[t]#777
[ ][t][ ]#999
[t][ ][t]#successful!

其中[ ]代表空格,[t]代表制表符,即有些行的行首有任意多个空格或制表符。
如果依旧使用上面的awk命令,则最后4行的行尾会添加自定义的字符串,而这四行实际上是注释,不应添加。而使用如下的awk即可达到效果(修改的部分使用蓝色加粗标记):
awk '{if((NF != 0) && ($0 !~ /^[ t]*#/)) $0 = $0" [my addition]"} {print $0}' csdn.txt > csdn1.txt

|
经过测试,如下简单代码可行:
sed 's/(^[^#])/行首增加的字符串1/g' 文件名

|
#!perl -w
use strict;

while(){
    next if /^#!/;
    next if /^s*$/;
    #do something
    s/$//g; 
}

|
元芳,CSDN新论坛上线!你怎么看?

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux shell 中# 字符当成注释?
  • 我的shell不支持中文注释,请高手帮忙
  • 简单问题:怎样在SHELL脚本里注释掉暂时不想执行的语句?
  • 这个SHELL有几行看不明白,能帮忙注释下吗?
  • Shell脚本注释写法
  • 大家能帮我这个SHELL做个简单的注释吗?
  • 麻烦高手帮忙看看这个shell 第 44行,问题我用注释了
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • shell变量和子shell的问题请教
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • 请问一个shell中如何获取这个shell自身抛出的错误?
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3