গ্রেপ - ডিলিমিটার টোকেন পরে পাঠ্য অপসারণ


12

আমার একটি ফাইল রয়েছে যাতে ;প্রতি লাইনে প্রথমের পরে আমার সমস্ত কিছু মুছতে হবে।

সুতরাং এই মত একটি ফাইল:

sdfsdsdf;
fsdfsddf;sdfsd;

এর ফলস্বরূপ:

sdfsdsdf
fsdfsddf

আমি দেখেছি grepএবং sed। আমি এই আদেশগুলির মধ্যে দুটিকে অন্তর্ভুক্ত করে একটি উত্তরকে প্রশংসা করব।

উত্তর:


5

sed এই পরিস্থিতিতে অবাক বা পার্লের চেয়ে সম্ভবত সবচেয়ে সহজ এবং দ্রুত:

sed 's/^\([^;][^;]*\);.*$/\1/' some_file_name

6
এটি হওয়া উচিত আরও জটিল! sed 's/;.*//'
গিলস 'অশুভ হওয়া বন্ধ করুন'

আমি আলাদা করতে অনুরোধ। পার্ল-আকারের 's /;.*//' কিছু_ফিল_নাম ঠিক তত সহজ এবং বড় ফাইলগুলিতে অপারেটিং করার সময় 1500% পর্যন্ত দ্রুততর হয়।
কোডহেড

আমার বেশ কয়েকটি সিস্টেম রয়েছে যেখানে সেড পাওয়া যায় তবে পার্লটি পাওয়া যায় না, তাই আমি হালকা-ওজন সমাধানগুলি যেখানে যথেষ্ট সেগুলি ব্যবহার করে উত্সাহিত করি।
dubiousjim

7

আর একটি বিকল্প হ'ল cutকমান্ডটি ব্যবহার করা

cat a.file | cut -d';' -f1

9
বিড়ালের জন্য আমাদের অকেজো

3

আমি সাধারণত awkএই জাতীয় জিনিসগুলির জন্য ব্যবহার করি :

cat a.file | awk -F=";" '{ print $1 }'

এটি কোনও ফাইলের প্রতিটি লাইন নেবে এবং ডিলিমিটারের আগে প্রথম গোষ্ঠীটি মুদ্রণ করবে -F



1
দ্বিতীয় ডেনিস সেখানে। এবং লিনাক্স এবং BSD এর অধীনে -F = "; উদ্দেশ্য হিসাবে কাজ করে না। এবং আপনি যে $ 1 এরও উদ্ধৃতি দিতে চাইতে পারেন: awk -F ";" '{মুদ্রণ {1}' a.file
কোডহেড

2

জিএনইউ ব্যবহার করে এটি করার একটি উপায় এখানে রয়েছে grep:

grep -Po "^[^;]+(?=;?)" filename

Gnu গ্রেপ ব্যতীত: grep -Eo '^[^;]+;' filenameপ্রায় এটি পেয়ে যায়, এটি কেবল একটি চরিত্রকে অনেক বেশি মুদ্রণ করে। grep -Eo '^[^;]+' filenameপ্রায় এটি পেয়ে যায়, তবে এটি সম্পূর্ণ (খালি নয়) লাইনও মুদ্রণ করবে যেগুলির কোনও নেই ;
dubiousjim
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.