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

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}'

@ 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


2

Sie könnten das headanstelle von verwenden cat:

head -n1 /etc/*release | awk '{print $1}'

2
sed -n 1p /etc/*release |cut -d " " -f1

wenn tabulatorgetrennt:

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

1

Versuchen

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

Dabei ist NUM die Zeilennummer

ex. sed '1q;d'  /etc/*release | awk {'print $1}'

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

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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.