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


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.