2016-10-19 23 views
0

我希望做兩件事情一組文件夾中的文本文件,但一直沒能如願:包含字符串Title: grep的查找不包含字符串文件,然後使用SED前面加上多行字符串的文件

  • 文件夾中

    1. 查找和排除文本文件添加多行字符串下面的結果。

    標題:
    作者:
    類型:
    類型:
    格式:

    我可以做的第一步這樣做:

    find . -type f | grep -L "Title: " 
    

    對於第二步我正在使用這個命令,但它不是可以使用多條線路。

    find . -type f | grep -L "Title: " * | sed -i '1iTitle:\Author:\Type:\Genre:\Format:\' 
    

    但是我無法讓它工作。

  • +0

    當你排除包含'標題文件:',你想只檢查第一行或f中的任何地方ILE?如果只是第一線,解決方案將是簡單得多 – Sundeep

    +0

    我只是想檢查的第一行。 – thisisjaay

    +0

    嘗試'find -type f -exec sed -i'1 {/ Title:/!小號/.*/標題:\ nAuthor:\ n類型:\ nGenre:\ nFormat:\ n&/} '{} +'目錄內...或只是'sed的-i' 1 {/職務:/!小號/.*/標題:\ nAuthor:\ n類型:\ nGenre:\ nFormat:\ n&/}」 *'如果你只有在該目錄中的文件 – Sundeep

    回答

    0

    怎麼樣遞歸grep來避免find然後調用結果sed? (請注意,您的sed表達不能工作;使用sedfile,你可以做你想做的)

    grep -rL "Title: " | xargs sed -i -f sedfile 
    

    sedfile是如下

    1i\ 
    Title:\ 
    Author:\ 
    Type:\ 
    Genre:\ 
    Format: 
    

    (BTW檢查您正在使用的sed版本有-i選項爲「就地」,我不敢肯定,在這種情況下,這將是一個稍微複雜一些,但仍然是可行的)

    相關問題