শেড লাইনগুলি সরিয়ে দেয়, তবে সাদা স্থান ছেড়ে দেয়?


1

এই কোডটি নিয়ে সমস্যা হচ্ছে। এটি তারিখের সাথে মিলিত লাইনগুলি সরিয়ে দেয় (আমার ক্ষেত্রে, 09/05/17) যা ঠিক আছে। তবে এর জায়গায় কেবল ফাঁকা রেখা রয়েছে।

কেউ সমাধান পেয়েছেন?

sed -i -e "s|$PrevDay.*$||" $DataFile2

যদি কেউ এটি চেষ্টা করতে আগ্রহী হন তবে এই কোডটি প্রয়োগ করা হয়েছে এমন সম্পূর্ণ স্ক্রিপ্টটি এখানে উপলভ্য: পেস্টবিন.
com/

1
আপনার ইনপুট ফাইলের একটি নমুনা পোস্ট করা উচিত যাতে আমরা এর বিপরীতে সমাধানগুলি পরীক্ষা করতে পারি। দেখুন এই অনুরূপ প্রশ্ন, তাহলে চেষ্টা sed -i -e "/$PrevDay.*$/d" $DataFile2। বা ব্যবহার awk -i '!/$PrevDay.*$/ {print $0}' $DataFile2
সিমলেভ

আপনি যদি পাইপ |বিভাজকটি বজায় রাখতে চান তবে ব্যবহার করুনsed -i -e "\|$PrevDay.*$|d" $DataFile2
সিমলেভ করুন

উত্তর:


0

উত্তরে আমার পূর্ববর্তী মন্তব্যটি প্রসারিত করা।

sed -i -e "\|$PrevDay.*$|d" $DataFile2

ব্যাখ্যা: আপনি এমন একটি ফাংশন ব্যবহার করছেন যা প্রতিটি লাইনের পাঠ্যকে প্রতিস্থাপিত করে। আপনি |চরিত্রটিকে ডিলিমিটার হিসাবে বেছে নিয়েছেন, প্রথম এবং দ্বিতীয় ডিলিমিটারের মধ্যে অপসারণের জন্য এক্সপ্রেশনটি লিখেছিলেন এবং দ্বিতীয় এবং তৃতীয় ডিলিমিটারের মধ্যে সন্নিবেশ করানোর জন্য এক্সপ্রেশনটি লিখেছিলেন। সুতরাং, লাইনটি সম্পাদনা করা হলেও মুছে ফেলা হয়নি।

আপনি যদি লাইনটি মুছতে চান তবে আপনার আলাদা সিনট্যাক্স ব্যবহার করা উচিত:

\||ডিফল্ট পরিবর্তে ডিলিমিটার হিসাবে সংজ্ঞায়িত করে/

$PrevDay.*$অনুসন্ধান করার প্যাটার্নটি হল, $PrevDayআপনার কাছ থেকে বাশ স্ক্রিপ্টের কোনও পরিবর্তনশীল

| অনুসন্ধান প্যাটার্নের শেষ চিহ্নিত করে

d মানে প্যাটার্নের সাথে মিল পাওয়া লাইনটি মুছতে হবে

দেখুন এই Stackoverflow অনুরূপ প্রশ্ন।

ইউএনআইএক্স-এর মতো ওয়াল্ডে যেমন সাধারণ, একই ফলাফলটি বিভিন্ন উপায়ে অর্জিত হতে পারে, যেমন ব্যবহার করে awk; নিম্নলিখিত অভিব্যক্তিটির অর্থ: "যদি নিদর্শনগুলি মিলে না যায় তবে পুরো লাইনটি মুদ্রণ করুন"।

awk -i '!/$PrevDay.*$/ {print $0}' $DataFile2

এটি করার জন্য আমি আদেশটি সন্ধান করেছি। এটি লাইনগুলিতে everything প্রিভেডে লাইনগুলি বাদ দিয়ে সবকিছু মুদ্রণ শেষ করে। এটি কোনও ফাইলের মধ্যে রাখার সময় কাজ হয়নি, তাই আমি সেডটি ব্যবহার করার চেষ্টা করেছি। ব্যাখ্যাটির জন্যও ধন্যবাদ, স্ক্রিপ্ট বাশ শিখতে বেশ মজাদার।
ইন্টারকনেট

-1

একবার চেষ্টা করে দেখো: sed -i -e "s|$PrevDay.*$||" $DataFile2 | grep -v '^$'

যদি আপনার ইনপুট লাইনটি খালি না থাকে তবে এতে সাদা স্থানের অক্ষর রয়েছে তবে আপনি ব্যবহার করতে পারেন

sed -i -e "s|$PrevDay.*$||" $DataFile2 | grep -v '^[[:blank:]]*$'

দুর্ভাগ্যক্রমে এখনও অদৃশ্য রেখাগুলি অপসারণ বলে মনে হচ্ছে না।
ইন্টারকনেট

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