আমি যখন ভেরিয়েবল মুদ্রণ করতে চাই তখন কেন পুরো লাইনে মুদ্রণ করা যায়?


24

যখন আমি টাইপ করি:

echo "foo bar" | gawk -v var="content" '{print $var}'

আমি আশা করি আউটপুট হবে content। এটা কেন foo bar?



প্রকৃতপক্ষে. আমি বাশ সিনট্যাক্স নিয়ে বিভ্রান্ত হয়ে
পড়েছি

এটি একটি ভাল প্রশ্ন এবং যদিও উত্তরটি দেখায় যে $ভুল জায়গায় প্রতিস্থাপন করা হয়েছিল আমি নিশ্চিত নই যে এটি টাইপোর মতো বন্ধ করা উচিত। আমি এর বেশ কয়েকটি সম্প্রতি দেখেছি তাই সম্ভবত আমাদের একটি ক্যানোনিকাল প্রয়োজন
রোয়াইমা

উত্তর:


45

ভেরিয়েবল হিসেবে নাম উল্লেখ করা হয় varনা, $varawkতম ক্ষেত্রকে$n বোঝায় : প্রথম ক্ষেত্রের জন্য, দ্বিতীয়টির জন্য ... বা সম্পূর্ণ রেকর্ড == 0 ( সম্পূর্ণ রেকর্ড)।n $1$2n$0

তাদের আক্ষরিক সংখ্যা হতে হবে না। আপনি ব্যবহার করতে পারেন $(1+1)বা $variable। যদি variableথাকে 1তবে $variableপ্রথম ক্ষেত্র হবে। একটি $NFসর্বশেষ ব্যবহৃত ক্ষেত্রটি সর্বশেষ ক্ষেত্রের জন্য (ক্ষেত্রের NFসংখ্যা সমেত একটি বিশেষ পরিবর্তনীয়) is

যদি, আপনার উদাহরণের মতো, চলকটিতে কোনও সংখ্যা না থাকে তবে সেই অ-সংখ্যাটি 0 হিসাবে বোঝা যায়।

সুতরাং var="content"; print $var, একই হিসাবে var=0; print $varএবং এইভাবে একই print $0, এটি পুরো রেকর্ডটি মুদ্রণ করে।

আপনি এখানে যা চান তা হ'ল:

echo "foo bar" | gawk -v var="content" '{print var}'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.