背景
我期待在發送之前去掉git archive
輸出的一些python源代碼文件的任何# TODO
評論。我期望從一個腳本中這樣做,它將從各種* nix操作系統運行,因此它應該儘可能符合POSIX標準。xargs如何使用heredocs?
我知道find -print0
和xargs -0
不在基本規範中,但它們看起來很普遍,以至於我很好地使用它們(除非存在更好的替代方案)。我使用ed
,因爲sed -i
不在就地編輯的基本規範中。假設下面的命令正在從一個已經解壓tar的git壓縮文件的目錄運行。
我很樂意提供一個整體替代解決方案來剝離# TODO
評論,但爲了滿足我的好奇心,我還想回答我遇到的特定問題,我用我提出的命令。
現有代碼
find . -type f -name "*.py" -print0 | xargs -0 -I {} ed -s {} << 'EOF'
,g/^[ \t]*#[ \t]*TODO/d
,s/[ \t]*#[ \t]*TODO//
w
EOF
預期結果
在「py」爲結尾的文件都剝奪了全行僅包含TODO註釋,或的行末註釋以TODO開始。
實際結果
(標準輸出)
,g/^[ \t]*#[ \t]*TODO/d
,s/[ \t]*#[ \t]*TODO//
w
: No such file or directory
當前理論
我相信<< 'EOF'
定界符被應用到xargs
而不是ed
,我不知道如何解決那。