2016-03-22 10 views
0

ich eine Textdatei Wie extrahieren Zeilen mit einzigartigem Text in einer Spalte

"3"|"0001" 
"1"|"0003" 
"1"|"0001" 
"2"|"0001" 
"1"|"0002" 

d.h. eine Rohr getrennte Textdatei enthält, Strings in Anführungszeichen ähnlich wie

habe.

Was ich tun muß, ist:

Zuerst extrahieren Sie die erste Zeile, die jeden Wert in der ersten Spalte enthält, die Herstellung von

"3"|"0001" 
"1"|"0003" 
"2"|"0001" 

Dann sortiert nach den Werten in der ersten Spalte, die Herstellung von

"1"|"0003" 
"2"|"0001" 
"3"|"0001" 

die Art Performing ist einfach - sort -k 1,1 -t \| - aber ich bin fest auf die erste Zeile in der Datei zu extrahieren, die jeden Wert in der ersten Spalte enthält. Ich dachte an die Verwendung von uniq, aber es tut nicht, was ich will, und es ist "Spalten-Handling" Fähigkeiten sind zu ignorieren, die ersten 'x' Spalten von Leerzeichen oder Tab-getrennte Text.

Verwenden der Posix-Shell (/ usr/bin/sh) unter HP-UX.

Ich zeichne hier eine Art leer. Irgendwelche Vorschläge willkommen.

Antwort

2

Sie tun können:

awk -F'|' '!a[$1]++' file|sort... 

Der awk Teil die duplizierten Linien entfernen, lassen Sie nur das erste Vorkommen.

Ich habe keine HP-Unix-Box, deshalb kann ich keinen echten Test machen. Aber ich denke, es sollte gehen ...

+0

Mein 'awk'-fu war nicht dazu da, das herauszufinden. Klappt wunderbar. Danke vielmals! –