On peut utiliser sed ou awk ou un oneliner d’un autre langage, mais split, qui est dédié à cette tâche, est plus performant.
Quelque soit l’outil, il y a un « mais » ici aussi : cette commande va créer une série de fichiers dont la base est dans mon exemple temporaire-
$ ls temporaire-*
temporaire-aatemporaire-abtemporaire-actemporaire-ad
Noter que split seul est bien comme miroir de cat ici...
On a la première ligne qui contient le motif, donc le chapeau... On peut rajouter une commande pour faire fi de cette ligne dans le cas présent, mais je ne sais pas si c’est le comportement de Classeur.
De plus, si je comprends bien, il faut remettre dans les chemins indiqués. Du coup, je traduirai par quelque chose comme
tmp=$(mktemp -t $(basename 0ドル))-
echo"Splitting ${markdownfile} with scissors «${scissors}»"
split -p "^$scissors [[:alnum:]]+\.md $scissors$' "$markdownfile" $tmpfor openfile in $(ls $tmp??); do filename=$(expr "$(head -n 1"$openfile")" : "$scissors (.*) $scissors") if [ -e "$filename" ]; then echo "Found file $filename" else echo "Add file $filename" fi mv "$openfile" "$filename" && rm "$openfile"done
Ça commence à devenir sioux et je ressors un vieil ami souvent oublié : expr au lieu de juste quelque chose comme filename=$(head -n 1 "$openfile" | sed "s/$scissors//g") car je ne sais pas aprioris le délimiteur qui sera disponible... Il est aussi possible d’utiliser grep -Po au lieu de sed mais ce n’est pas portable...
Anyway, la bonne approche est bien d’écrire un script (que tu maîtrises et peux maintenir) ...pour la bonne raison que ce n’est pas de l’utilisation directe des commandes et que ces opérations ne sont pas ponctuelles.
j'avais pas envie de me souvenir des commandes à chaque fois.
Sur ce, bonne fin de semaine à tout le monde.
Tiens, s’il y en a qui ont l’idée de comment réaliser l’équivalent des capteurs d’attention comme sur IRC ça m’intéresse : en gros, que les journaux et commentaires me mentionnant m’interpellent. ↩
Autant il est facile de faire un prototype ou de résoudre un problème interactivement en shell, écrire un script solide n’est pas forcément trivial et peu connaissent bien le shell en tant que langage de programmation (il y a pas mal de subtilités qui prennent du temps à être maitrisé.) Dans tous les cas prenez un langage dans lequel vous ferez quelque chose de robuste et performant dans un temps raisonnable : le commentaire présent est plus pour faire découvrir/rappeler des commandes qui pourront être utiles à d’autres occasions. ↩
"It is seldom that liberty of any kind is lost all at once." ― David Hume
# Shell/Bash
Posté par Gil Cot ✔ (site web personnel, Mastodon) . En réponse au journal classeur, un script python quick&dirty pour avoir tout son texte dans un seul fichier. Évalué à 8. Dernière modification le 13 janvier 2024 à 17:24.
On parle de moi ? Me voici...1
:DEn journaux en fait, mais seul le premier a été accouché ; la suite est restée en gestation (j’étais en recherche de réponses par rapport aux markdown de malheur...)
Bon, revenons au classeur
;)Comme le shell est mon dada, je vais fournir les équivalences (ce qui ne remet pas en cause le travail.)2Habituellement, le merge est le travail de
cat...Mais ici il y a l’ajout des chapeaux... que je traduirai par quelque chose comme :
Habituellement, le split est le boulot de
splittout simplement.On peut utiliser
sedouawkou un oneliner d’un autre langage, maissplit, qui est dédié à cette tâche, est plus performant.Quelque soit l’outil, il y a un « mais » ici aussi : cette commande va créer une série de fichiers dont la base est dans mon exemple
temporaire-Noter que
splitseul est bien comme miroir decatici...On a la première ligne qui contient le motif, donc le chapeau... On peut rajouter une commande pour faire fi de cette ligne dans le cas présent, mais je ne sais pas si c’est le comportement de Classeur.
De plus, si je comprends bien, il faut remettre dans les chemins indiqués. Du coup, je traduirai par quelque chose comme
Ça commence à devenir sioux et je ressors un vieil ami souvent oublié :
exprau lieu de juste quelque chose commefilename=$(head -n 1 "$openfile" | sed "s/$scissors//g")car je ne sais pas aprioris le délimiteur qui sera disponible... Il est aussi possible d’utilisergrep -Poau lieu desedmais ce n’est pas portable...Anyway, la bonne approche est bien d’écrire un script (que tu maîtrises et peux maintenir) ...pour la bonne raison que ce n’est pas de l’utilisation directe des commandes et que ces opérations ne sont pas ponctuelles.
Sur ce, bonne fin de semaine à tout le monde.
Tiens, s’il y en a qui ont l’idée de comment réaliser l’équivalent des capteurs d’attention comme sur IRC ça m’intéresse : en gros, que les journaux et commentaires me mentionnant m’interpellent. ↩
Autant il est facile de faire un prototype ou de résoudre un problème interactivement en shell, écrire un script solide n’est pas forcément trivial et peu connaissent bien le shell en tant que langage de programmation (il y a pas mal de subtilités qui prennent du temps à être maitrisé.) Dans tous les cas prenez un langage dans lequel vous ferez quelque chose de robuste et performant dans un temps raisonnable : le commentaire présent est plus pour faire découvrir/rappeler des commandes qui pourront être utiles à d’autres occasions. ↩
"It is seldom that liberty of any kind is lost all at once." ― David Hume