কীভাবে কনসোলে টিএসভি (সিএসভি) প্রদর্শন করবেন, যখন খালি ঘরগুলি মিস করা হয়: `কলাম -t -s $ '\ t'`


12

আমার সাথে কলামগুলির সাথে স্পিরিটেড ফাইল রয়েছে tab

আমার কাছে ফাইল রয়েছে যখন কয়েকটি সারিতে ফাঁকা ঘর থাকে (ভিক্ষাবৃত্তির মাঝখানে)।

এই ধরনের ক্ষেত্রে column -t -s $'\t'কেবল ব্যর্থ হয়:

ইনপুট:

$ echo -e 'A\tB\tC\tD\n\tb1\t\td1\n\t\t\td2\na3\t\t\td3' > in.tsv
$ hexdump -C in.tsv 
00000000  41 09 42 09 43 09 44 0a  09 62 31 09 09 64 31 0a  |A.B.C.D..b1..d1.|
00000010  09 09 09 64 32 0a 61 33  09 09 09 64 33 0a        |...d2.a3...d3.|
0000001e

কলাম আউটপুট:

$ cat in.tsv | column -t -s $'\t'
A   B   C  D
b1  d1
d2
a3  d3

পরিবর্তে:

A       B       C       D
        b1              d1
                        d2
a3                      d3

আপনি কীভাবে টিএসভি কমান্ড লাইন ফর্ম্যাটিং করবেন তা সুপারিশ করতে পারেন? (ইউনিক্স উপায়ে, আমি প্রোগ্রামটির আউটপুটটি ফর্ম্যাটারে পাইপ করতে চাই, যেমন column)

"ফিক্সিং" columnপদ্ধতির কোনও উপায় ? অন্য কোনও হাতিয়ার হতে পারে?

উত্তর:


12

আপনি কেবল ডিবিয়ান ব্যবহার করতে পারেন column। এটি এমন বিকল্প সরবরাহ করে -nযা এটি আপনার পছন্দ মতো সঠিকভাবে কাজ করে।

বিকল্পভাবে, আপনি খালি কলামগুলিতে একটি জায়গা রাখতে পারেন sed:

sed ':x s/\(^\|\t\)\t/\1 \t/; t x' < in.tsv | column -t -s $'\t'

উদাহরণ:

$ sed ':x s/\(^\|\t\)\t/\1 \t/; t x' < in.tsv | column -t -s $'\t'
A   B   C  D
    b1     d1
           d2
a3         d3

আমি আশঙ্কা করছি কীভাবে বিকল্প '^ \ | \ t' এর সাথে সেড আচরণ করবে ... '^' এর কারণে পরমাণু নির্দিষ্ট করে নি। (সুতরাং, এটি কি \1খালি স্ট্রিংয়ের বিকল্প হতে চলেছে ?
গ্রেজগোর্জ ওয়েয়ারজোভিইকি

হ্যাঁ, \(^\)একা লাইনের শুরুতে নোঙ্গর করা খালি স্ট্রিংয়ের সাথে মেলে। \1এই খালি স্ট্রিংয়ের "একটি অনুলিপি তৈরি করে"।
এঙ্গাস

0
sed 's/||/| |/g;s/||/| |/g' filename-here

উপরের কমান্ডটি পাইপের জন্য তাই এটি ট্যাবস্পেসের সাথে প্রতিস্থাপন করুন।

আপনাকে খালি কলামগুলি খালি স্থানের সাথে প্রতিস্থাপন করতে হবে এবং আপনি ইতিমধ্যে ব্যবহৃত কমান্ডটিতে আউটপুটটি পাইপ করতে হবে।

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