Sed
如何在 grep 輸出的文件名後添加空格?
我正在使用
grep
搜尋文件中的匹配模式,並從輸出中複製其文件名。因為我經常做這個操作,所以我最終也可能會複製:
。因此,是否可以在第一個匹配的半列或文件名的結尾之前添加兩個空格?$ grep -Hrn -e "zorro" --color=always --exclude-dir=dir -I -F . | \ cut -c 11- | awk '$0="\033[33;35m"$0' | tr -s '[:space:]' doo.tex:1:zorro alper alper alper skfjsdlkfj dslfj dslkj
想要的輸出:
doo.tex :1:zorro alper alper alper skfjsdlkfj dslfj dslkj ^ <two space added>
我的第一個雖然去了awk
awk -F: -vOFS=: '{$1 = $1 " "; print}'
但這比我認為的需要做的工作更多,拆分並重新加入生產線。
sed替代方案非常簡潔
sed 's/:/ :/'
用 2 個空格和一個冒號替換第一個冒號。
關於帶冒號對話的文件名:
閱讀 GNU grep 手冊頁:使用
-Z
選項:“輸出零字節(ASCII NUL 字元)而不是通常跟隨文件名的字元。”所以:
# .......v grep -HrnZ -e "zorro" --color=always --exclude-dir=dir -I -F . | \ perl -pe 's/\0/ :/'