【问题标题】:Prefixing matching lines in a file为文件中的匹配行添加前缀
【发布时间】:2012-02-12 03:55:53
【问题描述】:

我自己尝试过以下方法:

for i in $(grep something toprefix.log); do sed -i -e 's/^/prefix/' $i; done

首先,为你的愚蠢道歉——我知道上面的方法行不通!

基本上,我想使用 grep、sed 或 awk 为日志文件中的匹配行应用前缀。

prefix-matching
prefix-matching
not-matching
prefix-matching
not-matching
not-matching
prefix-matching

提前致谢。

【问题讨论】:

    标签: parsing sed awk grep


    【解决方案1】:
    $ sed -i '/something/s/^/prefix/' toprefix.log
    

    编辑:详情见http://www.gnu.org/software/sed/manual/html_node/Addresses.html

    编辑:删除了“

    编辑:标签是\t,所以

    $ sed -i '/something/s/^/prefix\t/' toprefix.log
    

    添加prefix 和一个标签。

    【讨论】:

    • 感谢 Tichodroma。我试过这个并得到'sed:没有输入文件'。另外,道歉 - 我没有提到我用 grep 解析的“东西”不在 toprefix.log 中的行首。
    • 不要使用输入重定向'
    • '/something/' 在一行中任何地方寻找“某物”。
    • 太好了,感谢您的编辑!干得好 - 工作。您可能会说我对 sed 语法有点陌生。 ;)
    • 对不起,伙计们 - 也是这个网站的新手!做了事。 :)
    【解决方案2】:

    awk

    awk '/something/{print "prefix\t"$0;next}1' myfile > mynewfile
    

    【讨论】:

    • 在打印前缀行后是否需要next,这样没有前缀也不会打印?
    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2018-11-10
    • 2019-01-22
    相关资源
    最近更新 更多