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.
--
(hinteres Anführungszeichen) `` und der in $ ()
enthaltene Inhalt werden als Befehle erkannt.
[Referenzartikel] Bash-Tipps - Befehlsersetzung und Erweiterung des arithmetischen Ausdrucks, Parametererweiterung
--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
--Ü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
--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]
find -name pf_diff_\*.csv | xargs -I% mv % other_dir
-I
von xrags können nachfolgende Zeichen wie Variablen behandelt werden, in denen die Ergebnisse des vorherigen Befehls gespeichert werden.[Referenzartikel] Verschieben (mv) -Dateien, die sofort von find gesucht wurden
wc -l
nicht die Anzahl der Zeilen, sondern die Anzahl der Zeilenumbrüche. 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
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.
sed -i "1 i $(head -n 1 test.csv)" new.csv
Oder
head -n 1 test.csv | { read v ;sed -i "1 i $v" new.csv; }
"
i
at" 1 i ○○ "
) fügt Text vor dem Ziel ein.[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
history
, um vergangene Befehle zu überprüfen, verwenden Sie jedoch grep, wenn Sie nur den Verlauf eines bestimmten Befehls anzeigen möchten.Zum Beispiel, wenn Sie den Verlauf des Befehls ls anzeigen möchten
history | grep ls
--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.
/ 1
und / 2
) nach 10 nicht richtig erkannt wurden.So habe ich darüber nachgedacht.
cat sample.csv | cut -d ',' -f 10-11 | sed -e "s/\(.*\),\(.*\)/\1,\2/g"
sed -e "s / \ (. * \), \ (. * \) / \ 1, \ 2 / g"
bezieht sich rückwärts[Referenzartikel] bioinformatics(sed)
――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
――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
Ich bin mir nicht sicher, ob dieser Artikel die beste Lösung ist. Wenn Sie es nachschlagen, gibt es möglicherweise einen einfacheren Weg.