linux shell之paste合并文件和找到匹配的文件里面替換內(nèi)容(find和-exec或xargs組合)

1 問題

1)合并2個文件,這里用paste命令

2)找到匹配的文件里面替換內(nèi)容,這里用find 和 -exec或xargs命令組合

 
2 實現(xiàn)

1)合并2個文件,這里用paste命令,我們在paste后面加參數(shù)-d 然后加" ",表示文件之間內(nèi)容隔著空格,“,”表示文件之間內(nèi)容隔著內(nèi)容

    cat 1.txt
    1
    2
    3
    4
    5
    6
    cat 2.txt
    chenyu
    chengongyu
    hello
    paste 1.txt 2.txt -d ','
    1,chenyu
    2,chengongyu
    3,hello
    4,
    5,
    6,
    paste 1.txt 2.txt -d ' '
    1 chenyu
    2 chengongyu
    3 hello
    4
    5
    6

2)把當(dāng)前目錄下的cpp文件里的chenyu替換成hello(find和-exec組合)

    cat 1.cpp
    chenyu
    chengongyu
    chenzixuan
    chenyu
    cat 2.cpp
    chenyu
    chenzixuan
    chengongyu
    chenyu
    cat 3.cpp
    chenyu
    chencaifeng
    chengongyu
    cat 4.cpp
    chenyu
    chengong
    chenyu
    chencaifeng
     
     
    find . -name "*.cpp" -exec sed -i 's/chenyu/hello/' {} \;
     
    cat 1.cpp 2.cpp 3.cpp 4.cpp
    hello
    chengongyu
    chenzixuan
    hello
    hello
    chenzixuan
    chengongyu
    hello
    hello
    chencaifeng
    chengongyu
    hello
    chengong
    hello
    chencaifeng

3)把當(dāng)前目錄下的cpp文件里的hello替換成chenyu(find和xargs組合)

    find . -name "*.cpp" | xargs sed -i 's/hello/chenyu/'
     
    cat 1.cpp 2.cpp 3.cpp 4.cpp
    chenyu
    chengongyu
    chenzixuan
    chenyu
    chenyu
    chenzixuan
    chengongyu
    chenyu
    chenyu
    chencaifeng
    chengongyu
    chenyu
    chengong
    chenyu
    chencaifeng

 
3 要注意的地方

1)使用sed命令的時候要記得參數(shù)加-i,然后后面一般是's/pattern/replace_str/'  而不是's/pattern/replace_str'  忘記最后一個左斜杠會報錯

2)我們使用-exec的時候一般模式是下面的

-exec commond {} \;   這個{}和\;不能挨著一起,同時\;不能分開,比如\ ;也會有問題



 

 
作者:chen.yu
深信服三年半工作經(jīng)驗,目前就職游戲廠商,希望能和大家交流和學(xué)習(xí),
微信公眾號:編程入門到禿頭 或掃描下面二維碼
零基礎(chǔ)入門進(jìn)階人工智能(鏈接)