প্রদত্ত ফাইলগুলি (একাধিক) লাইনের শেষে ট্রিলিং হোয়াইটস্পেস কীভাবে সরিয়ে ফেলবেন?


9

আমি উত্স ফাইলগুলিতে অপ্রয়োজনীয় স্পেসগুলি দিয়ে বিরক্ত হয়ে পড়েছি যা আমি তাদের দেখানোর জন্য ভিআইএম কনফিগার করেছি।

সমস্যাটি হ'ল আমি প্রায়শই (সর্বদা না হলে) আমার সাথী বিকাশকারীদের সাথে অকেজো স্থান ব্যবহার করতে হয়।

আমি কেবল উত্স ফাইলগুলি স্ক্যান করতে চাই (একটি নিয়মিত অভিব্যক্তি দেওয়া) এবং প্রদত্ত সমস্ত ফাইল থেকে সাদা স্থান সরিয়ে ফেলতে চাই।

আমি ওয়েবে আশেপাশে অনুসন্ধান করেছি ("বাশ রিটস হোয়াইটস্পেস" ইত্যাদি) তবে দরকারী কিছু পাই নি।


2
কি সাদা জায়গা সরাবেন? আপনি কী অপসারণ করতে চান তার উদাহরণ ছাড়াই আমি দেখতে পাচ্ছি না যে কেউ আপনাকে কীভাবে সহায়তা করতে পারে। (আমি অনুমান করছি tr -d ' ' < file.fooঠিক আপনি যা খুঁজছেন তা নয়))
মাদুর

আপনি কর্মসূচী থেকে কীভাবে অকেজো সাদা স্থান এবং দরকারী সাদা স্থানের মধ্যে পার্থক্য বলতে পারেন? বিটিডাব্লু: আপনি লুপ এবং এমভি এবং সেড এবং হোয়াইটস্পেসের ধসের জন্য ব্যবহার করতে পারেন;
বিএসডি

আপনি যখন ভিএম
লুকাস

উত্তর:


8

যদি অকেজো হোয়াইটস্পেসের সাহায্যে আপনি লাইনটির শেষে হোয়াইটস্পেসটি অনুসরণ করতে চান তবে এটি জিএনইউ সিস্টেমে কাজ করবে:

find -name '*.c' -print0 | xargs -r0 sed -e 's/[[:blank:]]\+$//' -i

( *.cআপনার উত্স ফাইলগুলির সাথে যা কিছু মিলে যায় তার সাথে প্রতিস্থাপন করুন )


আমি শিরোনাম পরিবর্তন করেছি, আপনার উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। কেউ ভোট দিয়েছেন কারণ, তিনি ভেবেছিলেন এটি খুব সহজ, যাতে কারও কাছে এ জাতীয় প্রশ্ন জিজ্ঞাসা করা উচিত নয় ;^)। আবার আপনাকে ধন্যবাদ.
অলিভিয়ার পন্স

1

এটি একটি বারবার সমস্যা!

perl -i -pe 's/\s+\n/\n/'  ./*.c

(এটি ' \r\n' কেও সরিয়ে দেয় )

আমি সাধারণত কিছুটা জটিল সংস্করণ "এনআরএস" ব্যবহার করি (নিরর্থক স্থান নেই):

#!/usr/bin/perl -pi
s/\h*(\r\n|\n|\r)/\n/g;                 ## normalize \n (DOS, MAC)
s/^(\xFF\xFE|\xFE\xFF|\xEF\xBB\xBF)//;  ## remove BOM !

এটি ইনস্টল করুন: chmod 755 nrs; cp nrs ~/bin; (বা অনুরূপ)

আর ব্যবহার করুন: nrs ./*.c

বাইনারি ফাইলগুলিতে এটি ব্যবহার করবেন না!


0

এক্স-ওয়ে চেষ্টা করুন:

ex +'bufdo!%s/\s\+$//e' -scxa *.*

বর্তমান ফোল্ডারের সমস্ত ফাইল থেকে ট্রাইলিং হোয়াইটস্পেসগুলি সরাতে। পুনরাবৃত্তির জন্য (bash4 / zsh) আপনি একটি নতুন গ্লোববিং বিকল্প ব্যবহার করতে পারেন ( **/*.*)।

দ্রষ্টব্য: :bufdoকমান্ডটি পসিক্স নয় ।



0

GNU সরঞ্জাম সহ ইতিমধ্যে ঠিক আছে এমন ফাইলগুলির স্পর্শ এড়াতে:

grep -rlZ --binary-files=without-match --include='*.c' '\s$' . |
  xargs -r0 sed -i 's/\s+$//'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.