ইনপুট ডেটা "ট্যাবললিফাই" করার একটি শেল সরঞ্জাম


33

অনেক দিন আগে আমার মনে আছে এমন একটি কমান্ড ব্যবহার করা হয়েছে যা এটি সুন্দর বিন্যাসিত সারণীতে এর ইনপুট তৈরি করে।

উদাহরণস্বরূপ, এই ইনপুটটির জন্য,

apple 1 100
orange 20 19
pineapple 1000 87
avocado 4 30

আউটপুট এটির মতো হবে:

apple     1    100
orange    20   19
pineapple 1000 87
avocado   4    30

আমি এই সরঞ্জামটির নাম জানতে চাই।

উত্তর:


35

ব্যবহার column -tকলামটি ইউজ-লিনাক্সের অংশ ।

$ column -t <<END
> apple 1 100
> orange 20 19
> pineapple 1000 87
> avocado 4 30
> END
apple      1     100
orange     20    19
pineapple  1000  87
avocado    4     30

আমি ম্যান পৃষ্ঠাটি পছন্দ করি: " কলামেটের তালিকাগুলি"। "ট্যাবলিফাই" এর মতো।
রিড

0

awk সমাধান যে স্টাডিন সঙ্গে ডিল

যেহেতু columnপসিক্স নয়, সম্ভবত এটি হ'ল:

mycolumn() (
  file="${1:--}"
  if [ "$file" = - ]; then
    file="$(mktemp)"
    cat >"${file}"
  fi
  awk '
  FNR == 1 { if (NR == FNR) next }
  NR == FNR {
    for (i = 1; i <= NF; i++) {
      l = length($i)
      if (w[i] < l)
        w[i] = l
    }
    next
  }
  {
    for (i = 1; i <= NF; i++)
      printf "%*s", w[i] + (i > 1 ? 1 : 0), $i
    print ""
  }
  ' "$file" "$file"
  if [ "$file" = - ]; then
    rm "$file"
  fi
)

টেস্ট:

printf '12 1234 1
12345678 1 123
1234 123456 123456
' > file

পরীক্ষার আদেশগুলি:

mycolumn file
mycolumn <file
mycolumn - <file

সবার জন্য আউটপুট:

      12   1234      1
12345678      1    123
    1234 123456 123456

আরো দেখুন:


0

অপেক্ষাকৃত ছোট ফাইলগুলির জন্য, (যেখানে বাইটের দৈর্ঘ্য কম হয় getconf ARG_MAX) এবং ইনপুট আকারগুলি কম বেশি জানা যায় (আসুন যাক কোনও ফলের নাম 18 অক্ষরের বেশি নয়) printfএটি কার্যকর হতে পারে, এখানে একটি bashউদাহরণ রয়েছে:

 printf '%-20s %5s %5s\n' $(<file.txt)

আউটপুট:

apple                    1   100
orange                  20    19
pineapple             1000    87
avocado                  4    30

নোট সে সংখ্যা কত হয় ডান সমর্থনযোগ্য।

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