2017-09-04 3 views
0

Ich habe Problem, konnten Sie mir bitte helfen?Wenn eine Zeichenkette in der Spalte gleich ist, drucke spezifischen Text mit AWK

INPUT:

LIS 
LOP 
LOP 
LAT 

Wenn eine oder mehr Zeichenfolge in der Eingabe werden "LIS" seinen Druck einer Zeile "ES GIBT LIS", wenn wird es Kombination von "LOP" oder "LAT", ohne „LIS ", Drucken" Es gibt LOP "und wenn es alle Zeichenfolgen gibt" LAT "drucken" ES GIBT NUR LAT ". Danke

+1

Haben Sie versucht, alles selbst? –

+0

Ja Ich habe versucht, es in mehreren Zeilen zu tun: Ich habe versucht, Zeilen nur mit LIS zu drucken, und wenn es mehr Zeilen als 0 gibt, drucke ich es gibt LIS und dasselbe für andere Bedingungen, aber es ist nicht in einem awk – Vonton

+0

awk '{if ($ 1 == "LIS") drucken $ 0} '| awk 'END {if (NR> 0) drucke "ES GIBT LIS"} und so weiter .. Aber ich weiß nicht, wie man es unter eine awk ... – Vonton

Antwort

2

awk Lösung:

check_column.awk Skript:

#!/bin/awk -f 

/LIS/{ print "THERE IS LIS"; exit } 
$0!~/(LOP|LAT)/{ print "No matches"; exit } 
/LOP/{ lop++ }/LAT/{ lat++ } 
END{ 
    if (lop || lat) { 
     printf "%s\n", (lat==NR)? "THERE IS ONLY LAT":"THERE IS LOP" 
    } 
} 

Verbrauch:

Beispieldatei file1:

LIS 
LOP 
LOP 
LAT 

awk -f check_column.awk file1 
THERE IS LIS 

----------

Beispieldatei file2:

LOP 
LOP 
LAT 
LAT 

awk -f check_column.awk file2 
THERE IS LOP 

----------

Beispieldatei file3:

LAT 
LAT 
LAT 

awk -f check_column.awk file3 
THERE IS ONLY LAT 
Verwandte Themen