Befehl cut oder awk zum Drucken des ersten Felds der ersten Zeile

78

Ich versuche, das erste Feld der ersten Zeile einer Ausgabe zu drucken. Hier ist der Fall. Ich muss nur SUSEvon dieser Ausgabe drucken .

# cat /etc/*release

SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 2

Versucht mit, cat /etc/*release | awk {'print $1}'aber das druckt die erste Zeichenfolge jeder Zeile

SUSE
VERSION
PATCHLEVEL
user3331975
quelle

Antworten:

187

Geben NRSie an, ob Sie die Ausgabe ausgewählter Zeilen erfassen möchten:

awk 'NR==1{print $1}' /etc/*release

Ein alternativer ( hässlicher ) Weg, dies zu erreichen, wäre:

awk '{print $1; exit}'

Ein effizienter Weg, um die erste Zeichenfolge aus einer bestimmten Zeile, z. B. Zeile 42, in der Ausgabe abzurufen, wäre:

awk 'NR==42{print $1; exit}'
devnull
quelle
@ Jaypal Ich dachte auch daran, ein hinzuzufügen, tac file | awk 'END{print $1}'aber dann wurde mir klar, dass es ein bisschen zu viel sein könnte.
Devnull
Aber das würde Ihre hässliche Lösung gegenüber der vorgeschlagenen abscheulichen Lösung bemerkenswert hübscher aussehen lassen !
Jaypal Singh
3
Es nicht ugly. Es ist sogar noch besser, da es bei einer großen Datei viel Zeit spart, wenn es beim Auffinden beendet wird und die Verarbeitung stoppt.
Jotne
@Jotne Ich nannte es hässlich, einfach weil NR==1es implizit war . In der Antwort wurde ein weiteres Beispiel hinzugefügt, das wahrscheinlich etwas mehr verdeutlicht.
devnull
@devnull Ich weiß, aber die OPs-Anforderung ist klar, print the first string of the first row of an outputalso hier exitwäre das in Ordnung.
Jotne
20

Geben Sie die Zeilennummer mithilfe der NRintegrierten Variablen an.

awk 'NR==1{print $1}' /etc/*release
jaypal singh
quelle
8

Versuche dies:

head -1 /etc/*release | awk '{print $1}'
Entwickler
quelle
2

Sie könnten das headanstelle von verwenden cat:

head -n1 /etc/*release | awk '{print $1}'
Junaid18183
quelle
2
sed -n 1p /etc/*release |cut -d " " -f1

wenn tabulatorgetrennt:

sed -n 1p /etc/*release |cut -f1
Raha Pazoki
quelle
1

Versuchen

sed 'NUMq;d'  /etc/*release | awk {'print $1}'

Dabei ist NUM die Zeilennummer

ex. sed '1q;d'  /etc/*release | awk {'print $1}'
Jayesh Bhoi
quelle
Dies würde die gesamte 1. Zeile und nicht das 1. Feld drucken, wie im OP angegeben.
Jaypal Singh
Antworte saras che pan thodu laambu che. Khali sedthi pan kari sakiye -sed -r '1s/([^ ]+) .*/\1/;q' /etc/*release :)
jaypal singh
1

awk, sed, pipe, das ist schwer

set `cat /etc/*release`; echo $1
Emmanuel
quelle
0

Sie können den Prozess beenden, auf dem der Container ausgeführt wird.

Mit diesem Befehl können Sie die mit dem Docker-Container verbundenen Prozesse auflisten:

ps -aux | grep $(docker ps -a | grep container-name | awk '{print $1}')

Jetzt haben Sie die Prozess-IDs, um mit kill oder kill -9 zu töten .

user3322829
quelle