আপডেট : ট্যাবুলেটেড আউটপুটটির জন্য এখানে অনেকগুলি সহজ স্ক্রিপ্ট (প্রশ্নের শেষে যেটি রয়েছে) ia আপনি যেমনটি চান ঠিক তেমন ফাইল নামটি এতে পাস করুন paste
... এটি html
ফ্রেমটি তৈরি করতে ব্যবহৃত হয়, তাই এটি টুইঙ্কযোগ্য। এটি একাধিক স্পেস সংরক্ষণ করে এবং যখন ইউনিকোড অক্ষরগুলির মুখোমুখি হয় তখন কলামের সারিবদ্ধতা সংরক্ষণ করা হয়। তবে সম্পাদক বা দর্শক যেভাবে ইউনিকোড সরবরাহ করে তা সম্পূর্ণ অন্য বিষয় ...
┌──────────────────────┬────────────────┬──────────┬────────────────────────────┐
│ Languages │ Minimal │ Chomsky │ Unrestricted │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ Recursive │ Turing machine │ Finite │ space indented │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ Regular │ Grammars │ │ ➀ unicode may render oddly │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ 1 2 3 4 spaces │ │ Symbol-& │ but the column count is ok │
├──────────────────────┼────────────────┼──────────┼────────────────────────────┤
│ │ │ │ Context │
└──────────────────────┴────────────────┴──────────┴────────────────────────────┘
#!/bin/bash
{ echo -e "<html>\n<table border=1 cellpadding=0 cellspacing=0>"
paste "$@" |sed -re 's#(.*)#\x09\1\x09#' -e 's#\x09# </pre></td>\n<td><pre> #g' -e 's#^ </pre></td>#<tr>#' -e 's#\n<td><pre> $#\n</tr>#'
echo -e "</table>\n</html>"
} |w3m -dump -T 'text/html'
---
উত্তরে উপস্থাপন করা সরঞ্জামগুলির একটি সংক্ষিপ্তসার (এখনও অবধি)।
আমি তাদের খুব কাছ থেকে দেখেছি; আমি যা পেয়েছি তা এখানে:
paste
# এই সরঞ্জামটি এখনও অবধি উপস্থাপিত সমস্ত জবাবের কাছে সাধারণ # এটি একাধিক ফাইল পরিচালনা করতে পারে; অতএব একাধিক কলাম ... ভাল! # এটি প্রতিটি কলামকে একটি ট্যাব দিয়ে সীমানা দেয় ... ভাল। # এটির আউটপুট ট্যাবুলেটেড নয়।
নীচের সমস্ত সরঞ্জাম এই ডিলিমিটারটি সরিয়ে দেয়! ... আপনার যদি ডিলিমিটারের প্রয়োজন হয় তবে খারাপ।
column
# এটি ট্যাব সীমানি অপসারণ করে, তাই ফিল্ড আইডেন্টিফিকনটি সম্পূর্ণরূপে কলামগুলি দিয়ে দেখায় যা এটি বেশ ভালভাবে পরিচালনা করছে .. আমি কোনও খারাপ বিষয় স্পষ্ট করে দেখিনি ... # স্বতন্ত্র সীমানা না রেখেও এটি দুর্দান্ত কাজ করে!
expand
# কেবলমাত্র একটি একক ট্যাব সেটিং রয়েছে, সুতরাং এটি 2 কলামের বাইরেও অনাকাঙ্ক্ষিত # # ইউনিকোড পরিচালনা করার সময় কলামগুলির প্রান্তিককরণ সঠিক নয়, এবং এটি ট্যাব ডিলিমিটারটি সরিয়ে দেয়, তাই ক্ষেত্র সনাক্তকারী খাঁটি কলামের প্রান্তিককরণের দ্বারা
pr
# কেবলমাত্র একটি একক ট্যাব সেটিং রয়েছে, সুতরাং এটি 2 কলামের বাইরে অনাকাঙ্ক্ষিত। # ইউনিকোড পরিচালনা করার সময় কলামগুলির প্রান্তিককরণ সঠিক নয়, এবং এটি ট্যাব ডিলিমিটার সরিয়ে দেয়, তাই ক্ষেত্র শনাক্তকরণ খাঁটি কলাম প্রান্তিককরণ দ্বারা
আমার কাছে column
এটি ওয়ান-লাইনার হিসাবে সুস্পষ্ট সেরা দ্রাবক .. এটি আপনি আপনার ডিলিমিটার বা আপনার ফাইলগুলির একটি এসসিআইআই-আর্ট ট্যাব্লুয়েশন চান, অন্যথায় পড়ুন, অন্যথায় .. columns
এটি খুব সুন্দর সুন্দর:) ...
এখানে এমন একটি স্ক্রিপ্ট রয়েছে যা ফাইলগুলির কোনও সংখ্যক পরিমাণ নেয় এবং একটি ASCII-art ট্যাবুলেটেড উপস্থাপনা তৈরি করে .. (মনে রাখবেন যে ইউনিকোড প্রত্যাশিত প্রস্থে রেন্ডার করতে পারে না, যেমন ௵ যা একটি একক অক্ষর This এটি কলামের থেকে একেবারেই আলাদা সংখ্যাগুলি ভুল হচ্ছে, যেমন উপরে উল্লিখিত কয়েকটি ইউটিলিটিগুলির ক্ষেত্রে)) ... স্ক্রিপ্টটির আউটপুট, নীচে দেখানো হয়েছে, F1 F2 F3 F4 নামক 4 ইনপুট ফাইল থেকে ...
+------------------------+-------------------+-------------------+--------------+
| Languages | Minimal automaton | Chomsky hierarchy | Grammars |
| Recursively enumerable | Turing machine | Type-0 | Unrestricted |
| Regular | Finite | — | |
| Alphabet | | Symbol | |
| | | | Context |
+------------------------+-------------------+-------------------+--------------+
#!/bin/bash
# Note: The next line is for testing purposes only!
set F1 F2 F3 F4 # Simulate commandline filename args $1 $2 etc...
p=' ' # The pad character
# Get line and column stats
cc=${#@}; lmax= # Count of columns (== input files)
for c in $(seq 1 $cc) ;do # Filenames from the commandline
F[$c]="${!c}"
wc=($(wc -l -L <${F[$c]})) # File length and width of longest line
l[$c]=${wc[0]} # File length (per file)
L[$c]=${wc[1]} # Longest line (per file)
((lmax<${l[$c]})) && lmax=${l[$c]} # Length of longest file
done
# Determine line-count deficits of shorter files
for c in $(seq 1 $cc) ;do
((${l[$c]}<lmax)) && D[$c]=$((lmax-${l[$c]})) || D[$c]=0
done
# Build '\n' strings to cater for short-file deficits
for c in $(seq 1 $cc) ;do
for n in $(seq 1 ${D[$c]}) ;do
N[$c]=${N[$c]}$'\n'
done
done
# Build the command to suit the number of input files
source=$(mktemp)
>"$source" echo 'paste \'
for c in $(seq 1 $cc) ;do
((${L[$c]}==0)) && e="x" || e=":a -e \"s/^.{0,$((${L[$c]}-1))}$/&$p/;ta\""
>>"$source" echo '<(sed -re '"$e"' <(cat "${F['$c']}"; echo -n "${N['$c']}")) \'
done
# include the ASCII-art Table framework
>>"$source" echo ' | sed -e "s/.*/| & |/" -e "s/\t/ | /g" \' # Add vertical frame lines
>>"$source" echo ' | sed -re "1 {h;s/[^|]/-/g;s/\|/+/g;p;g}" \' # Add top and botom frame lines
>>"$source" echo ' -e "$ {p;s/[^|]/-/g;s/\|/+/g}"'
>>"$source" echo
# Run the code
source "$source"
rm "$source"
exit
এখানে আমার আসল উত্তর (উপরের স্ক্রিপ্টের পরিবর্তে কিছুটা ছাঁটাই)
ব্যবহার wc
কলামের প্রস্থ পেতে হয়, এবং sed
একটি সাথে সঠিক প্যাড থেকে দৃশ্যমান চরিত্র .
তারপর (ঠিক এই উদাহরণে জন্য) ... এবং paste
একটি দুই কলাম যোগদানের জন্য ট্যাব গৃহস্থালির কাজ ...
paste <(sed -re :a -e 's/^.{1,'"$(($(wc -L <F1)-1))"'}$/&./;ta' F1) F2
# output (No trailing whitespace)
Languages............. Minimal automaton
Recursively enumerable Turing machine
Regular............... Finite
আপনি যদি ডান কলামটি প্যাড করতে চান:
paste <( sed -re :a -e 's/^.{1,'"$(($(wc -L <F1)-1))"'}$/&./;ta' F1 ) \
<( sed -re :a -e 's/^.{1,'"$(($(wc -L <F2)-1))"'}$/&./;ta' F2 )
# output (With trailing whitespace)
Languages............. Minimal automaton
Recursively enumerable Turing machine...
Regular............... Finite...........