শেল কমান্ড ব্যবহার করে কীভাবে ফাইল থেকে একটি কলাম বা একাধিক কলাম সরিয়ে নেওয়া যায়?


14

আমার কাগজপত্র,

ARCHIVE  B1_NAME  B2_NAME  B3_NAME  ELEMENT  INFO_NAM WERT PROCID                                               
-------- -------- -------- -------- -------- -------- ---- ------                                              
15MinAvg AIRSS    33-GIS   DMDMGIS1 I        MvAvr15m 1123  CP                                               
15MinAvg AIRSS    33-GIS   DMDMGIS1 P        MvAvr15m 2344  CP                                               
15MinAvg AIRSS    33-GIS   DMDMGIS1 Q        MvAvr15m 4545  CP                                               
15MinAvg AIRSS    33-GIS   DMDMGIS2 I        MvAvr15m 6576  CP                                              
15MinAvg AIRSS    33-GIS   DMDMGIS2 P        MvAvr15m 4355  CP                                             
15MinAvg AIRSS    33-GIS   DMDMGIS2 Q        MvAvr15m 6664  CP                                              

আউটপুট,

ARCHIVE  B1_NAME  B2_NAME  B3_NAME  ELEMENT WERT                                                
-------- -------- -------- -------- ------- ----                                              
15MinAvg AIRSS    33-GIS   DMDMGIS1 I       1123                                                    
15MinAvg AIRSS    33-GIS   DMDMGIS1 P       2344                                                      
15MinAvg AIRSS    33-GIS   DMDMGIS1 Q       4545                                                      
15MinAvg AIRSS    33-GIS   DMDMGIS2 I       6576                                                      
15MinAvg AIRSS    33-GIS   DMDMGIS2 P       4355
15MinAvg AIRSS    33-GIS   DMDMGIS2 Q       6664

আমি দুটি কলাম INFO_NAMএবং WERTআমার ইনপুট ফাইলটি মুছতে চাই ।


আপনি যে দুটি কলাম সত্যই মুছে ফেলতে চান। আপনার আউটপুটটি INFO_NAM& PROCIDমুছে ফেলেছে
— নিউরন

awk '{$(NF-1)=$(NF-2)=""};1' <file | column -tএটি সুন্দরভাবে ফর্ম্যাট করতে পারে।
— কিউনগলম

উত্তর:


28

Th ষ্ঠ এবং ৮ ম কলামটি মুদ্রণ করবেন না

awk '{$6=$8=""; print $0}' file

16

স্ট্যাক ওভারফ্লোতে অন্য কোথাও এর আগে উত্তর দেওয়া হয়েছে।

/programming/15361632/delete-a-column-with-awk-or-sed /programming/7551219/deleting-columns-from-a-file-with-awk -অন-কমান্ড-লাইন অন-লিনাক্স ইত্যাদি ..

আমি বিশ্বাস করি awkযে এটির জন্য সেরা।

awk '{print $1,$2,$3,$4,$5,$7}' file

এটি cutপাশাপাশি ব্যবহার করা সম্ভব ।

cut -f1,2,3,4,5,7 file

3
এর জন্য উদাহরণ দিন cut, না উল্লেখ করবেন না?
— ড্রইং স্লোয়ান

7
কেবল এটি উল্লেখ করার জন্য: --complementবিকল্পটি cutএখানে কার্যকর হতে পারে, অর্থাত ছয়টি বাছাইয়ের পরিবর্তে দুটি ক্ষেত্র অপসারণ:cut -f6,8 --complement file
— ফিক্সিম্যান

অ্যাডব্লিউ কাজ করছে ...... তবে কী হচ্ছে ... ফর্ম্যাটটি বদলে গেছে .... এটি ঠিক ক্ষেত্র গ্রহণ করছে তবে সঠিক কাঠামো নয় ... এবং কাটা কাজ করছে না ... @ আন্ড্রেইআর
— পিএমইপমুই

আমি এই চেষ্টা করেছি cut –c1-45,55-58,। তবে এটি কার্যকর করার আগে আমাকে মোট অক্ষর গণনা করতে হবে তবে কেবলমাত্র আমিই এটি আমাদের করতে পারি। তবে আমি আমার ইনপুট ফর্ম্যাটটির মতোই কলামগুলি মুদ্রণ করতে চেয়েছিলাম
— pmaipmui

@ নেনিটা হয়ত আপনার আলাদা বিভাজক হতে পারে যা স্থান নয়। জোর করে আপনার এটি নির্দিষ্ট করা উচিত (যেমন টেবুলার হলে -F "\ t" ব্যবহার করে)। কাটা ব্যবহার করে, -d ব্যবহার করতে হবে (কাটা-ডি, যদি কমা ব্যবহার করা হয়)।
— AndreiR

2

printfপ্রতিটি ক্ষেত্রের ফর্ম্যাট সংরক্ষণ করতে ব্যবহার করুন । প্রতিটি ক্ষেত্র এক্স অক্ষর দীর্ঘ এবং বিয়োগ চিহ্নটি স্ট্রিং বামটিকে ন্যায়সঙ্গত করে।

awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-4s\n", $1, $2, $3, $4, $5, $7)}' file
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.