2012-07-09 1 views
25

Ordnung, zu drucken, damit ich weiß, es ist ganz einfach bestimmte Argumente einer Linie mit $ drucken:awk Mit Zeichen von bestimmten Index auf einer Linie

$ cat file 
hello world 

$ awk '{print $1}' file 
hello 

Aber was, wenn ich Zeichen drucken möchten 2 durch 8? oder 3 bis 7? Ist das mit awk möglich?

Antwort

42
awk '{print substr($0,2,6)}' file 

die Syntax für substr() ist

substr(string,start index,length)

+0

Warum ist die Feldtrenn '-F = '\ n'' notwendig? Oder ist es? – Levon

+0

@Levon als ich dachte, das OP möchte den Teilstring des gesamten Datensatzes finden, nicht das Feld. – nims

+3

Ich bin ein bisschen verwirrt, versuche nicht zu streiten, nur um das klarzustellen. "$ 0" ist bereits die gesamte aktuelle Zeile. Wenn Sie also Teilstrings der aktuellen ganzen Zeile verwenden, sehe ich nicht, warum Sie '-F' angeben müssen. Was fehlt mir hier? – Levon

2

Wenn Perl eine Option ist:

perl -lne 'print substr($_,1,6)' file 

Ausgang ist identisch von @nims zu beantworten