আমি কীভাবে এই ফাইলটির অপ্রয়োজনীয় অংশটি সরিয়ে ফেলব?


3

আমার কাছে এই .scp ফাইল রয়েছে যা গুচ্ছ ফাইল রূপান্তর করার জন্য প্রয়োজনীয় পূর্ণ কমান্ড ধারণ করে।

এই ফাইলগুলি একটি ভিন্ন স্ক্রিপ্ট দ্বারা তৈরি হয়েছিল, একটি ভিন্ন উদ্দেশ্যে, তবে এখন আমার এটি একগুচ্ছ ফাইল রূপান্তরিত করা দরকার।

সমস্যাটি হ'ল প্রতিটি ফাইলই রূপান্তরিত হওয়া ফাইলগুলির ফাইলের নাম দিয়ে শুরু হয়, যা আমি এটি সম্পাদন করতে চাইলে কাজ করে না ..

স্ক্রিপ্ট কার্যকর করার মতো সহজ, আমি সমস্ত ফাইলকে রূপান্তর করতে পারি এমন ফাইলের প্রথমটি কীভাবে সরিয়ে ফেলব?

এখানে ফাইলের পাঠ্যটি কীভাবে ফর্ম্যাট করা যায় তার একটি নমুনা এখানে দেওয়া হল।

fcaw-b-an406 /home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an406-fcaw-b.sph |
fcaw-b-an407 /home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an407-fcaw-b.sph |
fcaw-b-an408 /home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an408-fcaw-b.sph |
fcaw-b-an409 /home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an409-fcaw-b.sph |
fcaw-b-an410 /home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an410-fcaw-b.sph |
fcaw-b-cen1 /home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/cen1-fcaw-b.sph |...

পছন্দসই আউটপুট

/home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an406-fcaw-b.sph |
/home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an407-fcaw-b.sph |
/home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an408-fcaw-b.sph |
/home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an409-fcaw-b.sph |
/home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/an410-fcaw-b.sph |
/home/k/kaldi-trunk/egs/start/s5/data/../../../../tools/sph2pipe_v2.5/sph2pipe -f wav -p -c 1 /home/k/kaldi-trunk/egs/start/s5/data/train/fcaw/cen1-fcaw-b.sph |...

উত্তর:


5

অনেক পথে:


  • grepপিসিআরই ( -P) এর সাথে:

    grep -Po '^[^\s]+\s+\K.*' file.txt
    • ^[^\s]+\s+হোয়াইটস্পেস অনুসরণের সাথে প্রথম ক্ষেত্রটি \Kমেলে, ম্যাচটি বাদ দেয় এবং তারপরে .*বাকী রেখার সাথে মেলে এবং মুদ্রিত হয়

  • sed:

    sed -E 's/^[^[:blank:]]+[[:blank:]]+//' file.txt
    • ^[^[:blank:]]+[[:blank:]]+ প্রথম ক্ষেত্রটির সাথে মিলবে, আবার পেছনের সাদা স্থান (গুলি) এর সাথে এবং খালি স্ট্রিংয়ের সাথে প্রতিস্থাপিত হবে

  • awk:

    awk -F "[[:blank:]]+" '{$1=""; print substr($0, 2)}' file.txt
    • -F "[[:blank:]]+"এক বা একাধিক শ্বেতস্পেস $1=""হিসাবে ক্ষেত্র বিভাজককে সেট করে, প্রথম ক্ষেত্রটি খালি স্ট্রিং হিসাবে সেট করে, এটি সামনে একটি শ্বেতক্ষেত্রের পরিচয় দেয়, তাই দ্বিতীয় থেকে শুরু হওয়া অক্ষর পেতে আমাদের সাবস্ট্রার ($ 0, 2) দিয়ে স্ট্রিং স্লাইসিং করা দরকার we

  • cut:

    cut -d" " -f2- file.txt
    • -d" "স্থান হিসাবে সীমানা নির্ধারণ করে এবং -f2-দ্বিতীয় থেকে শুরু করে ক্ষেত্রগুলি মুদ্রণ করে

  • bash:

    while read -r _ desired; do echo "$desired"; done <file.txt
    • প্রতিটি লাইন পড়া এবং প্রথম ক্ষেত্রটি গিওয়ে ভেরিয়েবল হিসাবে সেট করে _, desiredবাকি অংশটি অন্তর্ভুক্ত করে এবং মুদ্রিত হয়ে যায়echo "$desired"

  • perl:

    perl -pe 's/^[^\s]+\s+//' file.txt
    • অনুরূপ যুক্তিবিজ্ঞান sedএক

  • python:

    #!/usr/bin/env python
    with open('file.txt') as f:
        for line in f:
            print line.split(' ', 1)[1]
    
    • প্রতিটি লাইন পড়া এবং সর্বাধিক বিভাজনমূলক ক্রিয়াকলাপের সাথে মহাশূন্যে পাঠানো line.split(' ', 1)হবে , সুতরাং সূচক 0-এ প্রথম শব্দ থাকবে এবং সূচ 1 এর পছন্দসই অংশ থাকবে (যেমন দ্বিতীয় শব্দ থেকে শেষ অবধি)split1

cutএটি কেবল প্রথম লাইনের জন্যই করেছে ...
বব বার্ট

দুঃখিত .. তবে এটি কাজ করে না বলে মনে হচ্ছে ..
বব বার্ট

@ بابিবার্ট জিএনইউতে আমার পক্ষে ভাল কাজ করার জন্য এটি সমস্ত লাইনের জন্য করা উচিত coreutils 8.21। আপনার কোন সংস্করণ coreutilsআছে?
হিমাইল 18

@ Bobbur সমস্ত কোড পরীক্ষা করা হয় এবং আপনার উদাহরণে নিখুঁতভাবে কাজ করে।
হিমাইল 18

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