নিউলাইন দ্বারা পৃথক xargs


40

বিভাজক হিসাবে কেবল নতুনলাইন xargsব্যবহার করা কি সম্ভব ? (এটি যদি গুরুত্বপূর্ণ তবে লিনাক্স এবং ওএস এক্স-এ বাশিতে)

আমি জানি -0যে ব্যবহার করা যেতে পারে, তবে এটি পিআইটিএ যেমন প্রতিটি কমান্ড NUL- সীমাবদ্ধ আউটপুট সমর্থন করে না।


এটি কী যে আপনি সম্পাদন করার চেষ্টা করছেন? এটি সম্পর্কে আরও একটি উপায় থাকতে পারে।
ডেনিস উইলিয়ামসন

@ ডেনিস আমি এটিকে বিভিন্ন কাজের জন্য প্রায়শই গ্রেপ, সেড, খুব বেসিক অ্যাড ইত্যাদি পাইপলাইনে ব্যবহার করি, বেশিরভাগ ক্ষেত্রে মৃত্যুদন্ড কার্যকর করার জন্য। find -print0 -name \*.foo -maxdepth 1 | xargs -0 -P4তুলনায় তুলনায় টাইপ অনেক বেশি ls *.foo | xargs -P4
কর্নেল

স্ক্রিপ্ট এবং ফাংশন টাইপিং হ্রাস করার দুটি দুর্দান্ত উপায়।
ডেনিস উইলিয়ামসন

এটি একটি তাই প্রশ্ন, তাই না?
চার্লস স্টুয়ার্ট

উত্তর:


17

এর লাইন বরাবর কিছু

alias myxargs='perl -p -e "s/\n/\0/;" | xargs -0'
cat nonzerofile | myxargs command

কাজ করা উচিত.


38
tr '\n' '\0'খুব কাজ করে।
কর্নেল

2
পার্ল একক চরিত্রের জন্য ওভারকিল। trসিপিইউ এবং আপনার আঙ্গুলগুলির জন্য উভয়ই দ্রুত।
হ্যালো ওয়ার্ল্ড

52

জিএনইউ xargs (এটি পেতে লিনাক্সে ডিফল্ট; findutilsওএস এক্সের ম্যাকপোর্টস থেকে ইনস্টল করুন) সমর্থন করে -dযা আপনাকে ইনপুটটির জন্য একটি কাস্টম ডিলিমিটার নির্দিষ্ট করতে দেয় , তাই আপনি এটি করতে পারেন

ls *foo | xargs -d '\n' -P4 foo 

alias xxargs="xargs -d '\n'"আমার বাশার্কে আছে সুতরাং আমি ঠিক এই জাতীয় জিনিসগুলি করতে পারি:grep -IRl foo | xxargs sed -i s/foo/bar/g
টাইলার

4
এটি সত্যই গ্রহণযোগ্য উত্তর হওয়া উচিত। পার্ল ভাঙার দরকার নেই। যদিও trএটি খুব ভাল ধারণা।
এহতেশ চৌধুরী

3
brew install findutilsএবং gxargsছিল ঠিক কি আমি OS X এর উপর ধন্যবাদ প্রয়োজন।
ব্র্যাড কোচ

5

বাশের সাথে, আমি সাধারণত-পড়ার সময়গুলির লুপের পক্ষে, কমপক্ষে কিছুটা অসুবিধাজনক কোনও জিনিসের জন্য জার্গস এড়াতে পছন্দ করি। আপনার প্রশ্নের জন্য, while read -ar LINE; do ...; doneকাজটি (লাইন সহ অ্যারের সিনট্যাক্স ব্যবহার করা মনে রাখবেন, যেমন, ${LINE[@]}পুরো লাইনের জন্য)। এটির জন্য কোনও কৌশল করার দরকার নেই: ডিফল্টরূপে পড়ার \nজন্য লাইন টার্মিনেটর চরিত্রের মতোই ব্যবহার হয় ।

Xargs বনাম বনাম পড়ার সময় লুপগুলি করার পক্ষে আমার পক্ষে একটি প্রশ্ন পোস্ট করা উচিত ... হয়ে গেছে!


2
এটি কেবল অনুকরণ করতে পারে xargs -n1 -d'\n', পুরোটাও নয় xargs
হ্যালো ওয়ার্ল্ড

@ হেলো ওয়ার্ল্ড - আপনি সহজেই যথেষ্ট পরিমাণে যুক্তিগুলি গুছিয়ে নিতে পারেন, তাই আপনি xargs -n$Nকেবলমাত্র অতিরিক্ত স্ক্রিপ্টিংয়ের সাহায্যে সীমাবদ্ধ করতে পারেন ।
চার্লস স্টুয়ার্ট

হ্যাঁ, আমি প্রচারকারীদের মধ্যে রয়েছি, এটি উল্লেখ করার মতো একটি মন্তব্য মাত্র।
হ্যালো ওয়ার্ল্ড

ঠিক এটাই আমি করি! এছাড়াও, আপনি readপৃথক ভেরিয়েবলগুলিতে আরও শব্দ পড়ার মতো বিকল্পগুলি ব্যবহার করতে পারেন বা এর সাথে ডিলিমেটার পরিবর্তন করতে পারেন IFS=' '
সিজারসোল

0

মানক সংস্করণ সহ নয়। আমার একটি হ্যাক সংস্করণ রয়েছে যা এটি করে - আমি ' find ... -print0 | xargs -0 ...' সম্পর্কে জানার আগে এটি ব্যবহার করেছিলাম । আপনি যদি একটি অনুলিপি চান তবে আমার সাথে যোগাযোগ করুন - আমার প্রোফাইল দেখুন। (কোনও রকেট বিজ্ঞান নয় - এটি প্রায় কাজটি করে, যদিও এটি সম্পূর্ণ জার্গার্স প্রতিরূপ নয়))


0

এটি কী cat file | xargs | sed 's/ /\n/ig'স্ট্যান্ডার্ড লিনাক্স ব্যাশ সরঞ্জামগুলি ব্যবহার করে স্পেসগুলিকে নতুন লাইনে রূপান্তর করবে।


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