bash: মানগুলির তালিকার সাথে একাধিকবার রান কমান্ড


1

আমি একটি নতুন মান সঙ্গে প্রতিবার, একটি কমান্ড চালানোর প্রয়োজন:

grep VALUE0 myfile.txt
grep VALUE1 myfile.txt
grep VALUE2 myfile.txt

Grep কমান্ডটি "নকশাকৃত" এড হক (সর্বদা একই নয়) এবং শুধুমাত্র VALUE এর তালিকা সর্বদা একই, আমি grep-কমান্ডটিকে একটি ব্যাশ-ফাইলের ভিতরে একটি লুপে রাখতে চাই না। আমি "values.txt" মত একটি পৃথক ফাইলটিতে VALUE এর আমার তালিকা বজায় রাখতে পছন্দ করব এবং "values.txt" থেকে পড়া মানগুলির এই তালিকাতে একটি অ্যাড-হক শেল কমান্ড লুপ দিতে দেব।

উত্তর:


2

থেকে grep ম্যানুয়াল:

-এফ ফাইল, - ফাইল = ফাইল

প্রতি লাইন এক, ফাইল থেকে নিদর্শন পাবেন। খালি ফাইলে শূন্য প্যাটার্ন রয়েছে, এবং তাই কিছুই মিলছে না। (-ফ POSIX দ্বারা নির্দিষ্ট করা হয়।)

আপনি নিদর্শনগুলির সাথে একটি ফাইল তৈরি করতে পারেন, প্রতি লাইনে এক এবং কেবল চালান grep -f patternfile …। সম্ভবত এটি আপনাকে মাপসই করে না, তবে স্পষ্ট উদাহরণ ছাড়াই এটি জানা কঠিন।


এই শীতল! আমি Xargs উপায় জন্য আরো খুঁজছেন ছিল, কিন্তু এই এক এমনকি ভাল মনে হয়। ধন্যবাদ!
tschloss

2

আপনি এই ব্যবহার করতে পারেন xargs:

xargs -a values.txt -I {} grep {} myfile.txt

এই ফাইল যে মানে values.txt পড়া হয়, এক সময় একটি লাইন, তারপর কমান্ড grep ... myfile.txt চালানো হয়, যেখানে ... লাইন পড়া বিষয়বস্তু সঙ্গে প্রতিস্থাপিত হচ্ছে (আমি ব্যবহৃত {} কারণ যে কি find এছাড়াও ব্যবহার করে।)

যে বলা হচ্ছে, আমি আপনাকে বলতে পারেন যে

egrep 'VALUE0|VALUE1|VALUE2' myfile.txt

আপনি একটি সময়ে একাধিক টেক্সট অনুসন্ধান করতে পারেন।


শীতল, xargs ঠিক কি আমি খুঁজছেন ছিল বলে মনে হচ্ছে! দ্বিতীয় ধারণা পাশাপাশি আকর্ষণীয়। উভয় জন্য ধন্যবাদ !!
tschloss

0

এটা চেষ্টা কর:

#!/bin/bash

while read value
do
    grep $value myfile.txt
done < values.txt

রাখা values মধ্যে values.txt ফাইল, পৃথক লাইন প্রতিটি।


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