কোন লাইনের প্রথম এন অক্ষর মুছে ফেলার জন্য ইউনিক্স কমান্ড কী?


238

উদাহরণস্বরূপ, আমি চাই:

tail -f logfile | grep org.springframework | <command to remove first N characters>

আমি ভাবছিলাম যে trএটি করার দক্ষতা থাকতে পারে তবে আমি নিশ্চিত নই।

উত্তর:


355

ব্যবহার cut। যেমন। প্রতিটি লাইনের প্রথম 4 টি অক্ষর কেটে ফেলার জন্য (অর্থাত্ 5 ম চরে শুরু করুন):

tail -f logfile | grep org.springframework | cut -c 5-

1
পাইপ কেন কাজ করে না সে সম্পর্কে আপনার কোনও ধারণা আছে? যখন আমি সেই কমান্ডটি মূলত চালাই, 'কাট' ফলাফলগুলি স্টডআউটে প্রিন্ট করে না ... যদি আমি কেবল 'লেজ -ফ লগফাইলে চালাই' | কাট-সি 5- 'আমি ফলাফলগুলি দেখতে পাচ্ছি ... সমস্যাটি গ্রেপের সাথে অবশ্যই হওয়া উচিত আমি সাইগউইন এফওয়াইআই ব্যবহার করছি ধন্যবাদ
লেস 2

আপনি শেষ পাইপ এবং কাটা না যোগ করলে কী হবে? মূলত, আপনি যদি লাইনের শেষ অংশটি সরিয়ে ফেলেন?
এলবি 40

লগফাইলে এটি "লেজ" থাকে, এটি গ্রেপ দিয়ে ফিল্টার করে (অর্থাত্, "org.springframework" এর সাথে সমস্ত রেখাগুলি স্টাডাউটে প্রিন্ট করা হয়) যখন আমি পাইপটিকে 'কাটা'তে যুক্ত করি ... এটি যদি আমি মুছে ফেলি তবে এটি স্তব্ধ হয়ে যায় 'গ্রেপ' 'কাট' সঠিকভাবে কাজ করে ... আমি গ্রিপটি কীভাবে ব্যবহার করছি সে সম্পর্কে কিছু ভুল ভাবছি ... সাইগউইন জিনিসও হতে পারে
লেস 2

1
ওহ আমি দেখছি ... আপনি লেজ ব্যবহার করেন কেন? কেবল গ্রেপ org.springframework লগফাইলে করুন কাট-সি 5- তবে আমি মনে করি
সেডটি আরও

6
সমস্যাটি হ'ল, গ্রেপটি কাটা পাঠানোর আগে বড় অংশগুলিকে বাফার করছে কারণ এটি দেখতে পারে যে এটি কোনও টার্মিনালে লিখছে না। grep --line-buffered "org.springframeworkএই সমস্যাটি সমাধান করতে ব্যবহার করুন ।
স্টেইন শ্যাট

48
sed 's/^.\{5\}//' logfile 

এবং আপনি যে নম্বরটি চান তার চেয়ে 5 টি প্রতিস্থাপন করুন ... এটি কৌশলটি করা উচিত ...

প্রতিটি লাইনের জন্য সম্পাদনা করুন sed 's/^.\{5\}//g' logfile


29

আপনি ব্যবহার করতে পারেন cut:

cut -c N- file.txt > new_file.txt

-c: চরিত্র

file.txt: ইনপুট ফাইল

new_file.txt: আউটপুট ফাইল

N-: N থেকে শেষের অক্ষরগুলি কেটে ফেলা হবে এবং নতুন ফাইলে আউটপুট হবে।

অন্যান্য আরগগুলিও থাকতে পারে যেমন: 'এন', 'এন-এম', '-এম' অর্থ নবম চরিত্র, এনথ থেকে এমএথ চরিত্র, যথাক্রমে প্রথম থেকে শুরু করে গণিতের চরিত্র।

এটি ইনপুট ফাইলের প্রতিটি লাইনে অপারেশন সম্পাদন করবে।


4
tail -f logfile | grep org.springframework | cut -c 900-

প্রথম 900 টি অক্ষর মুছে ফেলবে

cut লাইনের শেষে 900 তম অক্ষরটি দেখানোর জন্য 900- ব্যবহার করে

যাইহোক আমি যখন গ্রেপ এর মাধ্যমে এই সমস্ত পাইপ করি তখন কিছুই পাই না


4
"কাট-সি 1-900" "প্রথম 900 টি অক্ষর মুছে ফেলবে না" - এটি কেবল প্রথম 900 টি অক্ষর রেখে যাবে। আপনি যদি প্রথম 900 টি চর সরিয়ে নিতে চান তবে "কাট-সি 901-" ব্যবহার করুন
আইম্মিকেল

@ আইমমিকেলের উত্তর অনুসারে এটি প্রতিটি লাইনে প্রথম 900 টি অক্ষর
ব্লেয়ার কনরাড

1
'কাট-সি 900- "প্রথম 899 টি অক্ষর মুছে ফেলবে, না?
ইয়িডিং ঝো

4

আমি মনে করি awkএটির জন্য সেরা সরঞ্জাম হ'ল এটি ফিল্টারকৃত লাইনে প্রয়োজনীয় স্ট্রিং ম্যানিপুলেশন ফাংশনগুলি উভয়ই ফিল্টার করতে এবং সম্পাদন করতে পারে:

tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}'

অথবা

tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'

1

এখানে সহজ ফাংশন, ব্যাশে পরীক্ষিত। ফাংশনের 1 ম প্যারাম স্ট্রিং, 2 য় প্যারাম হ'ল অক্ষরের সংখ্যা is

function stringStripNCharsFromStart { echo ${1:$2:${#1}} }

ব্যবহার: এখানে চিত্র বর্ণনা লিখুন


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