शेल कमांड का उपयोग करके फ़ाइल से कॉलम या कई कॉलम कैसे निकालें?


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इसे अच्छी तरह से प्रारूपित कर सकते हैं।
cuonglm

जवाबों:


28

6 वें और 8 वें कॉलम को प्रिंट न करें

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

16

इसका उत्तर स्टैक ओवरफ्लो पर कहीं और दिया गया है।

/programming/15361632/delete-a-column-with-awk-or-sed /programming/7551219/de हटाना- 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, या इसका उल्लेख न करें?
Drav Sloan

7
सिर्फ इसका उल्लेख करने के लिए: यहां --complementविकल्प cutआसान हो सकता है, यानी छह का चयन करने के बजाय दो क्षेत्रों को हटा दें:cut -f6,8 --complement file
फिक्समैन

awk काम कर रहा है ...... लेकिन व्हाट्सएप हो रहा है ... फॉर्मेट बदल गया है .... इसकी सिर्फ फील्ड ले रहा है लेकिन सटीक स्ट्रक्चर नहीं ... और कट काम नहीं कर रहा है ... @AndreiR
pmaipmui

मैंने यह कोशिश की है cut –c1-45,55-58,। लेकिन इसे क्रियान्वित करने से पहले मुझे कुल पात्रों को गिनना होगा, तभी मैं यह कर सकता हूं। लेकिन मैं अपने इनपुट फॉर्मेट के साथ कॉलम को प्रिंट करना चाहता था
pmaipmui

@ नैनीता शायद आपके पास अलग विभाजक है जो अंतरिक्ष नहीं है। Awk में आपको इसे निर्दिष्ट करना चाहिए (अर्थात सारणी का उपयोग करते हुए -F "\ t")। कट का उपयोग करना, -d (कट -d का उपयोग करना आवश्यक है, यदि अल्पविराम का उपयोग कर रहा है)।
आंद्रेई

2

printfप्रत्येक क्षेत्र के प्रारूप को संरक्षित करने के लिए उपयोग करें । प्रत्येक फ़ील्ड x वर्ण लंबा है और माइनस साइन बाईं ओर स्ट्रिंग को सही ठहराता है।

awk '{ printf("%-8s %-8s %-8s %-8s %-8s %-4s\n", $1, $2, $3, $4, $5, $7)}' file
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.