কিভাবে একটি দীর্ঘ হেক্স স্ট্রিং বিভক্ত করা


0

আমি একটি দীর্ঘ হেক্স স্ট্রিং আছে 00121 ইফেক5800020 ... ইত্যাদি

আমি পেতে তাই একটি সহজ উপায় আমি হেক্স কোডেড বাইট একটি স্থান দিয়ে এই বিভক্ত করতে পারেন 00 12 1e এফ সি 5 80 00 20 ভিমে (অথবা অন্য সহজে প্রবেশযোগ্য সরঞ্জাম)

উত্তর:


5
$ sed 's/\(..\)/\1 /g' <<< '1234567890'
12 34 56 78 90 

একই কমান্ডটি খুব ভালভাবে কাজ করে, ঠিক যেমন একটি লাইন নম্বর, একটি পরিসীমা, অথবা একটি% এটি উপযুক্ত। (ওহ, আমি উল্লেখ করব যে আপনাকে 'sed' বিটটি সরানো উচিত ... ঠিক আছে, আমি এখানে কিছু প্রভাবশালী মানুষ দেখেছি।)
lornix

2
যা সমতুল্য s/../& /g
grawity

উল্লেখ্য যে / g শেষে প্রদত্ত লাইনের উপরে সবকিছু ডাইস করবে।
Conrad.Dean

কিভাবে যে নিয়মিত অভিব্যক্তি কাজ করে?
Tom Wijsman

এটি গ্রুপ 1 তে 2 টি অক্ষর রাখে, তারপরে এটির পরে একটি স্থান দিয়ে গ্রুপ 1 আউটপুট করে।
Ignacio Vazquez-Abrams

0

এই কী ক্রমটি চেষ্টা করুন (সংখ্যাটির শুরু থেকে): q1lxPpr lq@1@1@1@1@1@1@1@1 (ইত্যাদি বা বলে, 20 @ 1)


কোন ব্যাখ্যা ছাড়াই "এই কী ক্রম ব্যবহার করুন" ভিম প্রশ্ন একটি ভাল উত্তর না।
grawity

হতে পারে. কিন্তু যে খুঁজে বের করার মজা নষ্ট হবে।
Benedict

1
শেষ আমি চেক করেছি, এউ সাইটে মানুষ ভাল উত্তর জন্য গিয়েছিলাম যেখানে ছিল।
grawity

1
আমি রাজী. এটি একটি ভাল উত্তর। আপনি নোট করব (এছাড়াও ভাল) গৃহীত উত্তর খুব চমত্কার। আপনি উভয় একটি শব্দসম্মত ব্যাখ্যা যোগ করার জন্য সম্পাদনা করতে চান তাহলে আপনি স্বাগত জানাই। বিকল্পভাবে আপনি বিশ্বাস করতে পারেন যে গড় পাঠক sed regex বা ভিম কী মানচিত্রের বিস্তারিত দেখতে যথেষ্ট জানেন।
Benedict

0

মধ্যে vim, তুমি ব্যবহার করতে পার :s/\([0-9a-f][0-9a-f]\)/\1 /g আপনি কি করতে চান। এটি পরীক্ষা করার জন্য, আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:

dd bs=512 if=/dev/urandom count=2 2>/dev/null | xxd -p | tr -d '\n' | vim -

তারপর মধ্যে vim, ব্যবহার করুন :s/\([0-9a-f][0-9a-f]\)/\1 /g হেক্স অক্ষর প্রতিটি জোড়া পরে একটি স্থান যোগ করতে। এখানে একটি ছোট উদাহরণ:

$ dd bs=32 if=/dev/urandom count=1 2>/dev/null | xxd -p | tr -d '\n' | vim -
6aad5f800a739fadbc3e2312230daeca8055491577b0e0d75a37bb3777f0a3e0
:s/\([0-9a-f][0-9a-f]\)/\1 /g
6a ad 5f 80 0a 73 9f ad bc 3e 23 12 23 0d ae ca 80 55 49 15 77 b0 e0 d7 5a 37 bb 37 77 f0 a3 e0 

0
:%s/\x\x/& /g

যথেষ্ট।

আপনি যদি কয়েকটি লাইন কাটাতে চান তবে আপনি এটি প্রয়োগ করতে পারেন :substitute প্রথম।

:%s/\x\{16}/&\r/g

অথবা আপনি যদি এক-লিনিয়ার পছন্দ করেন (আমি নিশ্চিত নই এটি এখানে একটি ভাল সমাধান)

:%s/\x\{16}/\=substitute(submatch(0), '\x\x', '& ', 'g')."\n"/g
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.