有人知道一個輸入可以輸入到bash
中的一個輸入符號,用於匹配和轉換所有出現的十六進制數字並保持所有其他文本不變?bash:oneliner將輸出中的十六進制數字轉換爲小數
- 也許匹配這可能是一個十六進制 應通過正則表達式以某種方式轉換而任意的輸出,即
/(0x)?[0-9a-fA-F]{5,}/
- 領先
0x
不得neccessary,但 也可以正確處理 - 可以有假陽性,如果不是 指定的最小長度的數字,但不應該是 問題
- 目標是找到解決方案,可以使用作爲米UCH爲十六進制數可能的輸出在他們
應該像輸出工作:在計算器
ssg sjas # cat /proc/net/stat/arp_cache | column -t
entries allocs destroys hash_grows lookups hits res_failed rcv_probes_mcast rcv_probes_ucast periodic_gc_runs forced_gc_runs unresolved_discards table_fulls
0000000d 00000006 00000004 00000000 0000c3b9 0000c35e 00000000 00000000 00000000 0000965b 00000000 00000000 00000000
0000000d 0000000d 00000004 00000001 00000000 00000000 00000000 00000000 00000000 000007cd 00000000 00000000 00000000
0000000d 00000008 00000008 00000001 00000000 00000000 00000000 00000000 00000000 000006e0 00000000 00000000 00000000
0000000d 0000000a 00000008 00000000 00000000 00000000 00000002 00000000 00000000 00000704 00000000 00000000 00000000
其他大多數問題只解決如何以單數數字系統之間進行轉換的問題,只做轉換爲指定列或徹底殺死輸入中存在的格式。
所需的輸出應該是這樣的:(column -t
反正是有,它真的只需要更換的十六進制值,它可以找到,並添加前導零的printf語句也沒有問題)
ssg sjas # cat /proc/net/stat/arp_cache | perl -pe 's/(?:0x)?[0-9a-f]{5,}/hex($&)/ge' | column -t
entries allocs destroys hash_grows lookups hits res_failed rcv_probes_mcast rcv_probes_ucast periodic_gc_runs forced_gc_runs unresolved_discards table_fulls
13 6 4 0 50105 50014 0 0 0 38491 0 0 0
13 13 4 1 0 0 0 0 0 1997 0 0 0
13 8 8 1 0 0 0 0 0 1760 0 0 0
13 10 8 0 0 0 2 0 0 1796 0 0 0
我在過去的兩個小時內通過sed
/awk
/perl
找不到可行的/可靠的解決方案,所以我來這裏尋求幫助。
請將您希望的輸出樣本輸入添加到您的問題中。 – Cyrus
@Cyrus做到了。 – sjas
期望的輸出與輸入不匹配,爲什麼'0000c1c5'轉換爲'0'? – 123