[Bash / Linux] Hinweise bei Problemen

Ein Memo über den Umgang mit Problemen und deren Verwendung, das Sie möglicherweise vergessen, wenn Sie mit dem Erlernen von Bash und Linux beginnen.

Index

Verwendungshinweise

Befehl ersetzen

-- (hinteres Anführungszeichen) `` und der in $ () enthaltene Inhalt werden als Befehle erkannt.

[Referenzartikel] Bash-Tipps - Befehlsersetzung und Erweiterung des arithmetischen Ausdrucks, Parametererweiterung

Zeitformat

--Wenn Sie in Form eines bestimmten Datums und einer bestimmten Uhrzeit ausgeben möchten.

Wenn Sie beispielsweise ein Format wie "yyyyMMddHHmmss" (20201025131540) verwenden möchten

date "+%Y%m%d%H%M%S"

[Referenzartikel] Datumsbefehl

Anzahl der Dateien im Verzeichnis

--Überprüfen Sie, wie viele Dateien im Verzeichnis vorhanden sind.

ls -1U | wc -l

[Referenzartikel] [Linux] Finden Sie heraus, wie viele Dateien sich in einem bestimmten Verzeichnis befinden

Suche nach einem Teil des Dateinamens oder des Verzeichnisnamens

--Finden Sie mit dem Befehl find die entsprechende Datei oder das entsprechende Verzeichnis aus Teiltext.

Zum Beispiel, wenn Sie im Arbeitsverzeichnis nach Dateien suchen möchten, die ".csv" enthalten

find work -name \*.csv

[Referenzartikel] Dateien durchsuchen und mehr! Detaillierte Zusammenfassung des Befehls find [Linux-Befehlssammlung]

Verschieben Sie die von find gefundene Datei in ein anderes Verzeichnis

find -name pf_diff_\*.csv | xargs -I% mv % other_dir

[Referenzartikel] Verschieben (mv) -Dateien, die sofort von find gesucht wurden

Reihenanzahl

 grep -c '' sample.txt

[Referenzartikel] wc-Befehl (um die Anzahl der Zeilen mit grep zu zählen) Es ist nicht "wc -l file", die die Anzahl der Zeilen in der Datei zählt wc -l kann die Anzahl der Zeilen in einer Datei ohne Zeilenumbruch am Ende des Satzes nicht korrekt zählen

Zeilenumbruch in der letzten Zeile entfernt

Zum Beispiel die folgende CSV-Datei

test.csv


"name","price","classification"
"pasta","250","carbohydrate"
"cabbage","150","vegetables"
"butter","120","fat"
← Diese Zeile enthält nur Zeilenumbrüche und keine Leerzeichen oder Zeichen

Eine Zeile unter "Butter", "120", "Fett" ist ein Zeilenumbruch ohne Erlaubnis. Die folgende Verarbeitung wird hinzugefügt, um dies zu beseitigen.

cat test.csv | head -c -1

Sie müssen sich keine Sorgen um den cat Teil machen, aber das Wichtigste ist der head -c -1 nach dem|. Da es sich um einen Vorgang handelt, bei dem ein anderes als das letzte Zeichen angezeigt wird, wird der Zeilenumbruch in der letzten Zeile ignoriert.

Fügen Sie den ausgewählten Text in die Datei ein

Bei Verwendung von sed

sed -i "1 i $(head -n 1 test.csv)" new.csv

Oder

Bei Verwendung von read und Variablen

head -n 1 test.csv | { read v ;sed -i "1 i $v" new.csv; }

"

[Referenzartikel] Fügen Sie mit dem Befehl sed eine Zeichenfolge in die erste Zeile der Datei ein Linux: Bearbeiten (direkt) mit dem Befehl sed überschreiben Operation des Befehls sed a und des Befehls i (Einfügen und Hinzufügen der angegebenen Zeichenfolge) [Linux-Befehl] Ordnen Sie den von der Pipe empfangenen Inhalt (Standardeingabe) mit bash der Variablen zu

Untersuchen Sie einen bestimmten Befehl

Geschichte

Zum Beispiel, wenn Sie den Verlauf des Befehls ls anzeigen möchten

history | grep ls

Prozess

--Verwenden Sie ps oder ps aux, um den Prozess zu überprüfen, verwenden Sie aber auch grep für bestimmte Befehle und Zeichenfolgen.

Zum Beispiel, wenn Sie nur über inotify wait anzeigen möchten

ps aux | grep inotifywait

Dies ist die Methode, zu der ich gekommen bin, als ich inotifywait im Hintergrund ausgeführt habe, ohne zu wissen, wie ich es ausschalten soll.

Sie können (sollten) nicht mehr als 10 Rückverweise auf sed haben

So habe ich darüber nachgedacht.

cat  sample.csv | cut -d ',' -f 10-11 | sed -e "s/\(.*\),\(.*\)/\1,\2/g"

[Referenzartikel] bioinformatics(sed)

In welcher Zeile sich die spezifische Zeichenfolge befindet (Position der CSV-Spalte ermitteln)

――Dies ist auch die Geschichte von CSV, mit der ich mich im Geschäft befasst habe. Die Anzahl der Spalten liegt leicht über 200, und es war notwendig, etwa 20 aus ihnen zu extrahieren und eine weitere Datei zu erstellen. ――Ich habe über die Methode nachgedacht, durch Kommas getrennte Zeilen zu brechen. ⇒ In welcher Zeile befindet sich die entsprechende Spalte?

$ cat sample.csv
Erste Spalte,Zweite Spalte,Dritte Spalte,4. Spalte,5. Spalte
a,b,c,d,e
$ head -n 1 sample.csv | sed -e "s/,/,\n/g" | grep -e "Dritte Spalte" -n
3:Dritte Spalte,

Auf diese Weise können Sie nach der gesuchten Spalte suchen.

[Referenzartikel] Geben Sie nur die Zeilennummer der entsprechenden Zeile mit grep (Suche nach angegebenen Zeichen) unter Linux aus

Fehlerbehandlung

/ bin / bash ^ M: Falscher Interpreter: Keine solche Datei oder kein solches Verzeichnis

――Ich habe mich mit mehreren Leuten entwickelt, und wenn ich die aus Git gezogene Muschel laufen ließ, erschien diese Anzeige oft.

$ ./test.sh
-bash: ./test.sh: /bin/bash^M:Falscher Dolmetscher:Es gibt keine solche Datei oder kein solches Verzeichnis

Machen Sie dasselbe wie im Referenzartikel

sed -i 's/\r//' test.sh

[Referenzartikel] / bin / bash ^ M: schlechter Interpreter: Keine solche Datei oder kein solches Verzeichnis

Schließlich

Ich bin mir nicht sicher, ob dieser Artikel die beste Lösung ist. Wenn Sie es nachschlagen, gibt es möglicherweise einen einfacheren Weg.

Recommended Posts

[Bash / Linux] Hinweise bei Problemen
Teilweise bei Problemen
Umgang mit Zitaten in [bash]
Behandeln Sie Daten in Linux-Bash-Befehlen
[Verständnis in 3 Minuten] Der Beginn von Linux
[Linux-Einstellungsserie] Bash-Eingabeaufforderungseinstellung. / prompt / bash / shell
Zeigen Sie den vollständigen Pfad (absoluten Pfad) einer Datei in einem Verzeichnis in Linux Bash an
Linux-Studiennotizen
Bash in Jupyter
Fügen Sie Python3 in den Docker-Container von Amazon Linux2 ein
Decoderbeschreibung in veriloggen (Beispielbeschreibung der case-Anweisung)
Die Geschichte des Aufbaus der schnellsten Linux-Umgebung der Welt
Fallklasse in Python
Bedeutung der Linux-Berechtigungen
Seurat unter Linux (Installation)
Installationshinweise für Arch Linux
Netzwerk-Memo (hauptsächlich Linux)
Code, der bei AttributeError Standardwerte festlegt