awk: print everything but not the last nth columns -


मेरे पास इस रूप में एक इनपुट फाइल है:

  foo बार 08 320984 2384 bla foo बज़ 23 32425 32532 [...]  

अंत में हमेशा तीन टोकन होते हैं, लेकिन सामने में एक अज्ञात संख्या में टोकन होते हैं। मैं फ़ाइल को सीएसवी के रूप में फिर से लिखना चाहता हूं ताकि इसे अन्य अनुप्रयोगों द्वारा स्वचालित रूप से पार्स किया जा सके। मेरी वर्तमान awk कमांड है:

  awk '{print $ (NF-2) ";" $ (NF-1) ";" $ NF}'  

आउटपुट होना चाहिए

  foo बार; 08; 320984; 2384 ब्ला फू बाज़; 23; 32425; 32532 [...]  

अगर मैं आपको और फीडोरक्वाइ को समझता हूं:

  awk '{for (i = 1; i & lt ; एनएफ; आई ++) प्रिंटफ़ "% s% s", $ i, (i + 4 & gt; एनएफ? ";": एफएस); प्रिंट $ एनएफ} 'फ़ाइल फू बार; 08; 320984; 2384 ब्ला फू बाज़; 23; 32425; 32532  

यह पिछले तीन क्षेत्रों के सामने ; जोड़ देगा।

ऐसा करने का बेहतर तरीका हो सकता है।


Comments