দ্বিতীয় পাইপের পরে কীভাবে কলামটি গ্রেপ করবেন


উত্তর:


7

ব্যবহার cut:

$ echo '3|100|test@test.com|0|0|6:1,10,11,12,13,2,3,4,5,6,9|7:1,10,11,13,16,2,4,5,6,9|' |\
cut -d'|' -f3
test@test.com

1
এটি অন * এক্স স্পিরিট: ছোট সরঞ্জাম যা একটি কাজ ভাল করে। wiki.debian.org/TheUnixWay faqs.org/docs/artu/ch01s06.html

4

সম্ভবত ব্যবহারের জন্য এইডক আরও উপযুক্ত:

awk 'BEGIN { FS = "|" } ; { print $3 }'

যদি আপনাকে এই জাতীয় ইনপুট থেকে একাধিক ক্ষেত্র আহরণ করতে হয়, আমি মনে করি এটি awk ব্যবহার করা সবচেয়ে সহজ।

(বন্ধ: আমি যদি কোনও বেতার ওয়ার্ডের দিকে নির্দেশ করি তবে আমাকে ক্ষমা করুন )


হতে পারে? কেন তুমি এমনটা মনে কর?

1
একাধিক ক্ষেত্র cutcut -d'|' -f3-5

2
আমার পূর্ববর্তী অভিজ্ঞতাগুলি থেকে, আমি ধরে নিয়েছি যে পোস্টারটি, বা অন্য কেউ এই পৃষ্ঠাটি সন্ধান করছে এমন সমস্যার মুখোমুখি হবে যে ইনপুট থেকে একাধিক কলাম প্রয়োজন required তবে হালকা সরঞ্জামটির সীমাবদ্ধ বৈশিষ্ট্য সেটটি পর্যাপ্ত থাকলে, একটি কম জটিল সরঞ্জাম (কাটা) সার্বজনীনগুলির (অ্যাজক) এর চেয়ে দ্রুত হতে পারে। (এটির ব্যাক করার জন্য আমার কাছে ডেটা নেই) এছাড়াও, আমার জন্য, ডাব্লু আদেশ কম্যান্ডটি আরও পঠনযোগ্য। লিখিত স্ক্রিপ্টটি যদি আমাকে আবারও পড়তে হয় তবে আমি অন্যের পক্ষে অ্যাজক লাইনটি দেখতে চাই - তবে এটি কেবল একটি ব্যক্তিগত মতামত, উদ্দেশ্যগত সত্য নয়। সে কারণেই কেবল 'হয়তো'।

2
+1 দুঃখিত, আমি কাটতে আমার হোম ওয়ার্কটি করিনি, এটি নির্দেশ করার জন্য ধন্যবাদ!


1

আপনার কন্টেন্টটি এই ফাইলের অধীনে উপস্থিত রয়েছে তা কেবল কল্পনা করুন file1

[সর্বাধিক @ লোকালহোস্ট ~] $ বিড়াল ফাইল 1 3 | 100 | test@test.com | 0 | 0 | 6: 1,10,11,12,13,2,3,4,5,6,9 | 7: 1 , 10,11,13,16,2,4,5,6,9 |

thirdক্ষেত্রটি কাটাতে এই কমান্ডটি ব্যবহার করুন

[সর্বাধিক @ লোকালহোস্ট ~] $ কাট-ডি "|" -ফ 3 ফাইল 1

test@test.com

এখানে

-d: চরিত্রটি ব্যবহার করার জন্য নির্দিষ্ট করে সীমানা হিসাবে

-ফ 1: প্রথম ক্ষেত্রটি মুদ্রণ করুন, আপনি দ্বিতীয় ক্ষেত্রের ব্যবহার -f2, তৃতীয় ক্ষেত্রের ব্যবহার -f3 এবং আরও কিছু মুদ্রণ করতে চাইলে ...

ধরুন file1কন্টেন্টটি এরকমই

[সর্বোচ্চ @ লোকালহোস্ট ~] $ বিড়াল ফাইল 1

রুট: X: 0: 0: রুট: / রুট দিনঃ / bin / ব্যাশ

তারপরে আমাদের :এভাবে ডিলিমিটার হিসাবে ব্যবহার করতে হবে

firstক্ষেত্রটি কাটাতে f1 ব্যবহার করুন

[সর্বোচ্চ @ লোকালহোস্ট ~] $ কাট-ডি ":" -ফ 1 ফাইল 1
মূল

secondক্ষেত্রটি কাটাতে f2 ব্যবহার করুন

[সর্বোচ্চ @ লোকালহোস্ট ~] $ কাট-ডি ":" -ফ 2 ফাইল 1
এক্স

thirdক্ষেত্রটি কাটাতে f3 ব্যবহার করুন

[সর্বোচ্চ @ লোকালহোস্ট ~] $ কাট-ডি ":" -ফ 3 ফাইল 1
0

1

শুধু মজার জন্য, এখানে কিভাবে আপনি এটা করতে পেরেছেন grepএবং tr:

<infile grep -Eo '^([^|]+\|){3}' | grep -Eo '[^|]+\|$' | tr -d '|'

প্রথম রেজেক্স প্রথম তিনটি পাইপ সীমাবদ্ধ ক্ষেত্রগুলি ধরে। দ্বিতীয় গ্রেপটি সর্বশেষ ক্ষেত্রটি খুঁজে বের করে এবং টিআর বাকী সীমানি অপসারণ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.