প্রথম প্যারামিটার হিসাবে xargs পাস করুন


53

আমি এই আচরণটি উত্পাদন করার চেষ্টা করছি:

grep 192.168.1 *.txt

Xargs এর মাধ্যমে গ্রেপ এ স্ট্রিংটি পেরিয়ে গেলেও এটি প্রথম প্যারামিটার হিসাবে পরিবর্তে শেষ হয়।

echo 192.168.1 | xargs grep  *.txt

শেষের পরিবর্তে 'গ্রেপ' এবং '*' এর মধ্যে আগত স্ট্রিংটি রাখার জন্য আমাকে xargs (বা অনুরূপ কিছু) বলতে হবে।

আমি এটা কিভাবে করবো?


উত্তর:


83
$ echo 192.168.1. | xargs -I{} grep {} *.txt

উদাহরণ

নমুনা ফাইল:

$ cat {1..3}.txt
192.168.1
192.168.1
192.168.1

উদাহরণ রান:

$ echo 192.168.1. | xargs -I{} grep {} *.txt
1.txt:192.168.1.
2.txt:192.168.1.
3.txt:192.168.1.

ধন্যবাদ, এটি কাজ করে। কিন্তু কেন? আপনি কি আমি প্রতিস্থাপন করছেন? আমি পাই না।
e18r

6
দেখে মনে হচ্ছে কোঁকড়ানো বন্ধনীগুলি একটি স্থানধারক। আপনি নিজের পছন্দ মতো কোনও কিছু দিয়ে {replace প্রতিস্থাপন করতে পারেন: প্রতিধ্বনি 192.168.1। | xargs -আমি pholder, grep pholder * .txt
denormalizer

3

অন্য পদ্ধতি:

find . -name \*.txt -print0 | xargs -0 grep 192.168.1

এটি শেল কমান্ড লাইনের দৈর্ঘ্যকে অনেক বেশি ফাইলের নাম দিয়ে উপচে ফেলবে না। ফাঁকা স্থানগুলির ফাইলের নামের সাথে বিভ্রান্ত হওয়া xargs/ এড়াতে grep, -print0এবং -0বিকল্পগুলি প্রতিটি পাওয়া নাম একটি এলএফের পরিবর্তে নাল দিয়ে অঙ্কিত করবে।

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