2016-12-03 1 views
-4

ich alle Spalten in einem geeigneten Format drucken mag, gibt es einen Befehl eine Spalte mit einigen spezifischen length.I für die Zuweisung von „\ t“ verwendet, die mir unter Ausgang gibt (File.txt), aber ich mag Required_output.txt.Kann eine bestimmte Länge für eine Spalte in Unix vergeben werden?

File.txt

Dec 2 amlfx_HDW_20161202.txt 01:05 12.70 
Dec 2 amltxn_HDW_20161202.txt   01:06 85.72 
Dec 2 amlsecmstr_HDW_20161202.txt  01:05 0.000 

Required_output.txt

Dec 2 amlfx_HDW_20161202.txt   01:05 12.70 
Dec 2 amltxn_HDW_20161202.txt   01:06 85.72 
Dec 2 amlsecmstr_HDW_20161202.txt  01:05 0.000 

ich den Befehl, ich möchte, dass die Speicherverwaltung in $ 11 und $ 10 in awk-Anweisung.

find . -mtime 1 -iname "aml*" -ls | awk '{print $8,$9"\t",substr($11,3,100)"\t",$10"\t",substr($7=$7/(1024^2),1,5)}' 
+1

'awk' können Formatiere den Ausdruck wie 'printf ("% - 20s ", $ 1)' und Python kann das wie 'print (" {: - 20s} ". format (value)') tun. Versuchen Sie, und folgen – Evert

+0

Ihre Frage krank obwohl gestellt, da Sie eine bestimmte Formatierung zu bekommen gefragt, aber werfen dann in Tags wie Python, awk, sed und sogar Schale (welche?) Und Unix (letztere hat nichts zu tun mit Ihrem Frage). Das ist zu weit gefasst. Im Allgemeinen sind einige Versuche des tatsächlichen Codes viel klarer, um herauszufinden, wo genau Sie stecken bleiben, also versuchen Sie es zuerst selbst. – Evert

+0

Sie haben keine Upvotes für jede Frage, die Sie gestellt haben, die meisten sind downvoted, Sie haben nur 1 Antwort akzeptiert und Sie haben eine Gesamtwiederholung von 3 nach mehreren Q/A. Offensichtlich auf SO zu posten, wie Sie es getan haben, funktioniert nicht für Sie. Warum nicht lesen [fragen] und sehen, ob Sie lernen können, wie man mehr Glück hat, Fragen zu stellen? –

Antwort

1

könnten Sie string formatting wie folgt verwenden:

In [33]: c1 = "hello" 

In [34]: c2 = "world" 

In [35]: print "{:10s}{:10s}".format(c1, c2) 
hello  world 

{:10s} im Grunde richtet Ihren Text auf der linken Seite mit einer Größe von 10 Zeichen.

+0

Danke, Können Sie bitte einmal meine letzte Code überprüfen – Barcode

+0

Ich sehe keine Python-Code in Ihrer Frage, versuchen die vorgeschlagene Formatierung Syntax und posten Sie Ihre Code, wenn Sie kann immer noch nicht die gewünschte Ausgabe erhalten. – sirfz

+0

finden. -mtime 1 -iname "aml *" -ls | awk ‚{$ 8, $ 9 "\ t", substr ($ 11,3,100) "\ t", $ 10 "\ t", substr ($ 7 = $ 7/(1024^2), 1,5) Drucken} – Barcode

0

Testdaten:

$ cat test.txt 
Dec 2 amlfx_HDW_20161202.txt 01:05 12.70 
Dec 2 amltxn_HDW_20161202.txt 01:06 85.72 
Dec 2 amlsecmstr_HDW_20161202.txt 01:05 0.000 

awk-Skript:

BEGINFILE{ 
    # FILENAME: built-in var 
    # get max width of each column 
    while(getline < FILENAME) 
    { 
     for(j=1;j<=NF;j++) 
     if(width_ary[j-1]<length($j)) 
      width_ary[j-1] = length($j) 
    } 
} 

{ 
    for(i=1; i<=NF; i++) 
    { 
     if (i < NF) 
     { 
      # to get format string like this: '%-10s ' 
      fmt = sprintf("%%-%ds ", width_ary[i-1]) 
      printf(fmt, $i) 
     } 
     else{ 
      fmt = sprintf("%%-%ds \n", width_ary[i-1]) 
      printf(fmt, $i) 
     } 
    } 
} 

Ausgang:

$ awk -f t.awk test.txt 
Dec 2  amlfx_HDW_20161202.txt   01:05 12.70 
Dec 2  amltxn_HDW_20161202.txt  01:06 85.72 
Dec 2  amlsecmstr_HDW_20161202.txt 01:05 0.000 
Dec 12 amlsecmstr_HDW_20161212.txt 02:05 10.10 

AWK Version:

awk -V 
GNU Awk 4.1.3, API: 1.1 
Copyright (C) 1989, 1991-2015 Free Software Foundation. 
+0

Ich versuchte Ihre Logik, aber es war kein Erfolg, und ich bekomme diesen Fehler awk: cmd. Linie: 1:^unerwartete Neue-Zeile oder das Ende ./awk.ksh string: Zeile 6: Syntaxfehler bei unerwartetem Token '(‘ ./awk.ksh: Zeile 6: 'for (j = 1, j <= NF ; j ++) ' – Barcode

+0

sorry, ich sollte dir awk Version meiner Box zeigen. hier ist awk verison: – kwinstonix

+0

Danke für deine Antwort.Dieses Problem wurde von meinem Ende behoben :) – Barcode

Verwandte Themen