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.
(retour de guillemets) '' et le contenu inclus dans $ ()
sont reconnus comme des commandes.$ ()
.
-Parce qu'il peut être imbriqué.[Article de référence] Astuces bash - remplacement de commande et expansion de l'expression arithmétique, expansion des paramètres
--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
ls -1U | wc -l
[Article de référence] [Linux] Découvrez combien de fichiers se trouvent dans un certain 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]
--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.
%
contient le résultat de find -name pf_diff_ \ *. Csv
.[Article de référence] Déplacer (mv) les fichiers recherchés par find à la fois
wc -l
n'est pas le nombre de lignes mais le nombre de sauts de ligne. 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
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.
sed -i "1 i $(head -n 1 test.csv)" new.csv
Ou
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.
i
at" 1 i ○○ "
) insère le texte avant la cible.[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
--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
--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.
--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"
cut -d ',' -f 10-11
--sed -e "s / \ (. * \), \ (. * \) / \ 1, \ 2 / g"
fait référence en arrièrecut
, les références arrière ne sont pas \ 10 et \ 11, mais peuvent être supprimées à de petits nombres tels que \ 1 et \ 2.[Article de référence] bioinformatics(sed)
«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
――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
Je ne sais pas si cet article est la meilleure solution. Si vous recherchez, il existe peut-être un moyen plus simple.
Recommended Posts