ডিলিমিটারগুলির মধ্যে স্ট্রিংগুলির অংশগুলি পার্স এবং সরান


1

আমি একটি ফাইলের মধ্যে দিয়ে যেতে চাই এবং ডিলিমিটারগুলির মধ্যে নির্দিষ্ট ক্রমগুলি সরিয়ে ফেলতে চাই।

উদাহরণ স্বরূপ

 drw---- 00000000 11111111        0 ./a/
 drw---- 00000000 11111111        0 ./b/
 d------ 00000000 11111111        0 ./c/
 d------ 00000000 11111111        0 ./d/k/
 d------ 00000000 11111111        0 ./e/l/r/
 d------ 00000000 11111111        0 ./f/m/s/x/
 ------- 00000000 11111111       89 ./g/n/t/y/C.xml
 dr----- 00000000 11111111        0 ./h/o/u/z/
 dr-r--- 00000000 11111111        0 ./i/p/v/A/D/
 d--r--- 00000000 11111111        0 ./j/q/w/B/

হবে

 drw---- ./a/
 drw---- ./b/
 d------ ./c/
 d------ ./d/k/
 d------ ./e/l/r/
 d------ ./f/m/s/x/
 ------- ./g/n/t/y/C.xml
 dr----- ./h/o/u/z/
 dr-r--- ./i/p/v/A/D/
 d--r--- ./j/q/w/B/

যেখানে প্রারম্ভিক ডিলিমিটারটি ফাইলের দ্বিতীয় স্থান এবং শেষের ডিলিমিটারটি হয় /

আমি সাইগউইন এবং এর সমস্ত চালাক সরঞ্জামগুলির জন্য সত্যিই নতুন, তাই আমি কী করব তা আমার কোনও ধারণা নেই। আমি নিশ্চিত যে আমি সেড এবং নিয়মিত এক্সপ্রেশনটি কোনওভাবে ব্যবহার করতে পারি তবে আমি নিজে থেকে সমাধানটি নিয়ে আসতে যথেষ্ট জানি না।


ডিলিমিটার <- আপনি এটি বানান এভাবেই করেন। আপনি এটি অন্য কোথাও পেয়েছেন তবে সাবজেক্টে নেই। শব্দ সীমা সেখানে আছে।
বারলপ

উত্তর:


2

এটি করার সহজ উপায় হ'ল ব্যবহার awk

$ awk '{print $1, $5}' myfile.txt

awkলাইন দ্বারা ফাইল লাইন পড়েন, কিছু বিশেষ ভেরিয়েবল সেট করে এবং প্রতিটি লাইনের জন্য কমান্ড চালায়। $1এবং $5এখানে প্রথম এবং পঞ্চম স্ট্রিং থাকে যখন একটি লাইনটি ডেলিমেটার হিসাবে স্থান ব্যবহার করে টোকনাইজড হয়।


এই খুব সুন্দর সমাধান, ধন্যবাদ আপনাকে অনেক ধন্যবাদ। আমি GAWK এ পড়তে হবে, মনে হচ্ছে এটি খুব দরকারী।
মিলিয়ানজ

2
যদি কোনও ফাইলের নাম ফাঁক না থাকে। তারপরে আপনি বলতে চাইতে পারেনawk '{$2=$3=$4=""; print}'
গ্লেন জ্যাকম্যান

1

এখানে আপনি চান রেজেক্স। হয় ফাইলটি ভিমে খুলুন এবং এটি চালান, বা করুন sed the_expression oldname > newname

:%s/[0-9][0-9]*//g

ব্যাখ্যা:
% চিহ্নটি উল্লেখ করে যে নিম্নলিখিত ফাইলটি সম্পূর্ণ ফাইলটিতে চালিত হওয়া উচিত।
sমানে search/for this expression/and replace it with this one/
আপনার ক্ষেত্রে আপনি সমস্ত নম্বর মুছতে চান তাই আমরা ভিএম এর রেজেক্স ইঞ্জিনকে এক বা একাধিক সংখ্যার প্রতিটি ঘটনা সন্ধান করার জন্য নির্দেশ দিয়েছি এবং এটিকে কিছুই না দিয়ে প্রতিস্থাপন করব।



এটি কেবলমাত্র নাম্বারগুলি সরিয়ে দিচ্ছে না যা আসলে "অপসারণকারীদের" মধ্যে রয়েছে যা মুছে ফেলছে না। উদাহরণস্বরূপ তিনি এটিকে কাজ করে দেন সীমানারদের মধ্যে এটির সংখ্যা হিসাবে। তিনি যা বোঝাতে চেয়েছিলেন তা অন্য বিষয়।
বারলপ

@ বার্লপ আমি জানি, এটি হাতে থাকা ডেটার জন্য একটি দ্রুত এবং নোংরা সমাধান ছিল।
ইয়েজচাক

1

"যেখানে প্রারম্ভিক ডিলিমিটারটি ফাইলের দ্বিতীয় স্থান এবং শেষের ডিলিমিটারটি হয় ./"

এখানে কেবল আপনার জন্য কুৎসিত

C:\sdf>type p.p
 drw---- 00000000 11111111        0 ./a/
 drw---- 00000000 11111111        0 ./b/
 d------ 00000000 11111111        0 ./c/
 d------ 00000000 11111111        0 ./d/k/
 d------ 00000000 11111111        0 ./e/l/r/
 d------ 00000000 11111111        0 ./f/m/s/x/
 ------- 00000000 11111111       89 ./g/n/t/y/C.xml
 dr----- 00000000 11111111        0 ./h/o/u/z/
 dr-r--- 00000000 11111111        0 ./i/p/v/A/D/
 d--r--- 00000000 11111111        0 ./j/q/w/B/
C:\sdf>sed -r "s/(\s+\S+\s*)([^.]*\.\/)/\1.\//" p.p
 drw---- ./a/
 drw---- ./b/
 d------ ./c/
 d------ ./d/k/
 d------ ./e/l/r/
 d------ ./f/m/s/x/
 ------- ./g/n/t/y/C.xml
 dr----- ./h/o/u/z/
 dr-r--- ./i/p/v/A/D/
 d--r--- ./j/q/w/B/
C:\sdf>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.