出於安全原因,我需要隱藏日誌文件中的IP地址。 IP地址是版本4和6如何隱藏,
IPv4的例子123.4.32.16
被x.x.x.x
更換
IPv6的例子232e:23o5:te43:5423:5433:0000:ef09:23ff
被x:x:x:x:x:x:x:x
替代的方式中的地址?
是否可以使用單個sed
命令執行此操作?用sed替換目錄中的多個文件的文本
1
A
回答
2
您可能想要使用找到和sed爲此。
讓我們假設你的日誌的擴展名爲 「.LOG」:
find /path/to/logs -type f -name '*.log' -exec \
sed -i -e 's,[0-9]\+\(\.[0-9]\+\)\{3\},x.x.x.x,g' \
-e 's,[0-9a-f]\+\(:[0-9a-f]\+\)\{7\},x:x:x:x:x:x:x:x,gi' {} \;
這是如何工作的?
首先,我們要求找到遞歸定位與.LOG擴展從/路徑開始的文件/到/日誌。 -type f告訴我們我們不想找到常規文件。
對於每個文件,它將執行sed。 -i參數告訴sed你想編輯文件。 (查看http://www.grymoire.com/Unix/Sed.html)解決方案使用
find
和perl
0
一:
find /the/directory -type f -exec perl -pi -e '
s/\b\d{1,3}(\.\d{1,3}){3}\b/x.x.x.x/g;
s/\b[a-f\d]{1,4}(:[a-f\d]{1,4}){7}\b/x:x:x:x:x:x:x:x/gi' {} \;
(在一行中鍵入)
0
0
我用這個:
find . -name "*.log" -exec grep -izl PATTERN {} \; | xargs perl -i.orig -e -n 's/PATTERN/REPLACEMENT/g'
你想要插入你的模式( s),並根據您的日誌文件的名稱將* .log替換爲其他內容。
-i.orig備份替換爲.orig擴展名的文件。
我發現這比我嘗試的其他東西相對更快。找到/ grep組合來識別候選人,然後perl來完成這項工作。
相關問題
- 1. 替換文本,用sed的
- 2. 在bash腳本中使用sed替換文件中的文本
- 3. sed文本替換
- 4. sed文本替換
- 5. sed替換文本
- 6. 使用sed替換多個文件中的多行
- 7. 用sed替換文本
- 8. 替換文本使用sed
- 9. 使用sed替換文本
- 10. SED替換文本的文本變量
- 11. 用於替換多個目錄中的圖像文件的基本腳本
- 12. 從文本文件中的目錄替換文件名
- 13. 兩個標籤替換文本 - sed的
- 14. 如何用sed替換同一個文件中的很多行?
- 15. 如何使用sed替換文件中的多個變量?
- 16. 使用sed替換多個文件中的字符串
- 17. Ansible替換目錄中的多個文件中的代碼
- 18. 使用替換文件中找到的文字,多次SED
- 19. sed中的多個替換
- 20. 使用sed替換文本文件中的行
- 21. 使用SED的Java屬性中替換文本文件
- 22. 使用sed替換文本文件中的「localhost」
- 23. 使用sed來查找和替換smb.conf文件中的文本
- 24. 使用sed替換HTML文件中的變量文本
- 25. 使用sed替換文本文件中的第一行
- 26. 使用sed或awk替換另一個文件的文本文件的行
- 27. Bash - sed替換文本
- 28. 替換文本與SED
- 29. sed:替換一段文本
- 30. sed替換爲大文本
是否所有的IPv6地址都是擴展形式?如果不是,這將是一個挑戰......(你想使用'sed','grep'只做正則匹配) – fge
啊,我明白了。是的,IPv6地址是擴展形式。這裏的文章說,我們可以使用grep來處理這種情況:http:// vasir。net/blog/ubuntu/replace_string_in_multiple_files/ –
然而,你會看到'grep'被傳送到'sed'; – fge