প্রথম স্থানের পরে কিছু অপসারণ করতে সেড / অ্যাজক ব্যবহার করা


20
aaaaaaaa 09  
bbbbbbbb 90   
ccccccccccccccc  89  
ddddd 09

উপরের লেখায় সেড / অ্যাজক / রিপ্লেস ব্যবহার করে আমি প্রতিটি লাইনের প্রথম স্থানের পরে আসা যে কোনও কিছু সরিয়ে ফেলতে চাই। উদাহরণস্বরূপ আউটপুট হবে:

aaaaaaaa  
bbbbbbbb    
ccccccccccccccc  
ddddd 

যে কোন ধরণের সাহায্য গ্রহন করা হবে.

উত্তর:


35

SED

sed 's/\s.*$//'

grep

grep -o '^\S*'

awk

awk '{print $1}'

মন্তব্যে নির্দেশিত হিসাবে, -oপসিক্স নয়; তবে জিএনইউ এবং বিএসডি উভয়েরই এটি রয়েছে, সুতরাং এটি বেশিরভাগ মানুষের পক্ষে কাজ করা উচিত।

এছাড়াও, \s/ \Sসমস্ত সিস্টেমে নাও থাকতে পারে, যদি আপনার এটি স্বীকৃতি না দেয় আপনি একটি আক্ষরিক স্থান ব্যবহার করতে পারেন, বা যদি আপনি স্থান এবং ট্যাব চান তবে বন্ধনী এক্সপ্রেশন ( [...]) বা [[:blank:]]অক্ষর শ্রেণি (নোট করুন যে কঠোরভাবে কথা বলছে \s) সমতুল্য [[:space:]]এবং সিআর, এলএফ বা ভিটি এর মতো উল্লম্ব ব্যবধান অক্ষর অন্তর্ভুক্ত রয়েছে যা আপনি সম্ভবত পরোয়া করেন না)।

awk এক অনুমান লাইন একটি ফাঁকা অক্ষর দিয়ে শুরু হবে না।


14
cut -d ' ' -f 1 < your-file

সবচেয়ে দক্ষ হবে।


4
আমি আপনার বেশ কয়েকটি উত্তরে এটি লক্ষ্য করেছি এবং আমি ভাবছিলাম যে এর কোনও কারণ আছে কিনা: আপনি যখনই কমান্ডটি ব্যতীত কাজ করতে পারেন তখনও আপনি ইনপুট পুনঃনির্দেশ যুক্ত করবেন বলে মনে হয়। আপনি এখানে দয়া করে ব্যাখ্যা করতে পারেন কেন <?
জোসেফ আর।

5
@JosephR। মানে cut < fileবনাম cut file? তারপরে unix.stackexchange.com/a/70759/22565 দেখুন
Stéphane

এই সহজ সমস্যার জন্য কাট সেরা সমাধান হতে পারে। আরও জটিল মিলের জন্য আমি awk (বা পার্ল) সংরক্ষণ করব।
চককট্রিল

@ স্টাফেন চ্যাজেলাস (বৈশিষ্ট্যপূর্ণ) অন্তর্দৃষ্টি জন্য আপনাকে ধন্যবাদ :)
জোসেফ আর


1

এবং এক মাধ্যমে perl,

$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd

জিএনইউ গ্রেপ এর মাধ্যমে,

$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.