[Bash / linux] Notes en cas de problème

Un mémo sur la façon de gérer les problèmes et de les utiliser que vous pourriez oublier lorsque vous commencerez à apprendre bash et linux.

indice

Notes d'utilisation

Remplacement de la commande

[Article de référence] Astuces bash - remplacement de commande et expansion de l'expression arithmétique, expansion des paramètres

Format de l'heure

--Lorsque vous souhaitez effectuer une sortie sous la forme d'une date et d'une heure spécifiques.

Par exemple, si vous souhaitez utiliser un format tel que "aaaaMMjjHHmmss" (20201025131540)

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

[Article de référence] commande de date

Nombre de fichiers dans le répertoire

ls -1U | wc -l

[Article de référence] [Linux] Découvrez combien de fichiers se trouvent dans un certain répertoire

Recherche par partie du nom de fichier ou du nom du répertoire

Par exemple, si vous souhaitez rechercher des fichiers contenant ".csv" dans le répertoire de travail

find work -name \*.csv

[Article de référence] Recherchez des fichiers et plus encore! Résumé détaillé de la commande find [collection de commandes Linux]

Déplacer le fichier trouvé par find vers un autre répertoire

--Je veux passer à un autre répertoire après avoir trouvé le fichier avec la commande find.

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

--L'option -I de xrags permet aux caractères suivants d'être traités comme des variables qui stockent les résultats de la commande précédente.

[Article de référence] Déplacer (mv) les fichiers recherchés par find à la fois

Nombre de lignes

 grep -c '' sample.txt

[Article de référence] commande wc (pour compter le nombre de lignes avec grep) Ce n'est pas "wc -l file" qui compte le nombre de lignes dans le fichier wc -l ne peut pas compter correctement le nombre de lignes dans un fichier qui n'a pas de saut de ligne à la fin de la phrase

Suppression du saut de ligne sur la dernière ligne

Par exemple, le fichier csv suivant

test.csv


"name","price","classification"
"pasta","250","carbohydrate"
"cabbage","150","vegetables"
"butter","120","fat"
← Cette ligne n'a que des sauts de ligne et pas d'espaces ni de caractères

Une ligne sous «beurre», «120», «gras» »est un saut de ligne sans permission. Le traitement suivant est ajouté pour éliminer cela.

cat test.csv | head -c -1

Vous n'avez pas à vous soucier de la partie cat, mais l'important est le head -c -1 après le|. Puisqu'il s'agit d'un processus à afficher autre que le dernier caractère, le saut de ligne sur la dernière ligne est ignoré en conséquence.

Insérer le texte sélectionné dans le fichier

Lors de l'utilisation de sed

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

Ou

Lors de l'utilisation de lecture et de variables

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

--sed -i "1 i ○○" " "" `convient avec une citation simple, mais utilisez" "" pour développer des variables.

[Article de référence] Insérez une chaîne sur la première ligne du fichier avec la commande sed Linux: Écraser l'édition (sur place) avec la commande sed Fonctionnement de sed une commande et de la commande i (insertion et ajout de la chaîne de caractères spécifiée) [commande Linux] Attribuez le contenu reçu du tube (entrée standard) avec bash à la variable

Examiner une commande spécifique

Histoire

--Utilisez history pour vérifier les commandes passées, mais utilisez grep lorsque vous souhaitez afficher uniquement l'historique d'une commande spécifique.

Par exemple, si vous souhaitez afficher l'historique de la commande ls

history | grep ls

processus

--Utilisez ps ou ps aux pour vérifier le processus, mais utilisez également grep pour des commandes et des chaînes spécifiques.

Par exemple, lorsque vous souhaitez afficher uniquement environ inotify, attendez

ps aux | grep inotifywait

C'est la méthode à laquelle je suis arrivé lorsque j'ai exécuté inotifywait en arrière-plan sans savoir comment le désactiver.

Vous ne pouvez pas (devriez) avoir plus de 10 références de retour à sed

--Lorsque je manipulais un fichier csv avec 10 colonnes ou plus dans mon entreprise, j'avais des problèmes car les références arrière (/ 1 et / 2) n'étaient pas reconnues correctement après 10.

Voici comment j'y ai pensé.

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

[Article de référence] bioinformatics(sed)

Sur quelle ligne se trouve la chaîne de caractères spécifique (recherchez l'emplacement de la colonne csv)

«C'est aussi l'histoire du csv que j'ai traitée en entreprise, le nombre de colonnes est légèrement supérieur à 200, et il a fallu en extraire environ 20 et créer un autre fichier. ――J'ai pensé à la méthode pour couper les lignes séparées par des virgules ⇒ dans quelle ligne se trouve la colonne correspondante.

$ cat sample.csv
Première colonne,Deuxième colonne,Troisième colonne,4e colonne,5e colonne
a,b,c,d,e
$ head -n 1 sample.csv | sed -e "s/,/,\n/g" | grep -e "Troisième colonne" -n
3:Troisième colonne,

De cette façon, vous pouvez rechercher la colonne que vous recherchez.

[Article de référence] Affiche uniquement le numéro de ligne de la ligne correspondante avec grep (recherche de caractères spécifiés) de Linux

La gestion des erreurs

/ bin / bash ^ M: Mauvais interpréteur: aucun fichier ou répertoire de ce type

――Je développais avec plusieurs personnes, et quand j'ai exécuté le shell extrait de git, cet affichage est souvent apparu.

$ ./test.sh
-bash: ./test.sh: /bin/bash^M:Mauvais interprète:Il n'y a pas de tel fichier ou répertoire

Alors faites la même chose que l'article de référence

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

[Article de référence] / bin / bash ^ M: mauvais interpréteur: aucun fichier ou répertoire de ce type

finalement

Je ne sais pas si cet article est la meilleure solution. Si vous recherchez, il existe peut-être un moyen plus simple.

Recommended Posts

[Bash / linux] Notes en cas de problème
Partiel en cas de problème
Gestion des devis en [bash]
Gérer les dates dans les commandes bash Linux
[Comprendre en 3 minutes] Le début de Linux
[Série de paramètres Linux] Paramètre d'invite bash. / prompt / bash / shell
Afficher le chemin complet (chemin absolu) d'un fichier dans un répertoire sous Linux Bash
Notes d'étude Linux
Bash dans Jupyter
Placez Python3 dans le conteneur Docker d'Amazon Linux2
Description du décodeur dans veriloggen (exemple de description de la déclaration de cas)
L'histoire de la création de l'environnement Linux le plus rapide au monde
classe de cas en python
Signification des autorisations Linux
Seurat sous Linux (installation)
Notes d'installation d'Arch Linux
Mémo réseau (principalement Linux)
Code qui définit les valeurs par défaut en cas d'AttributeError