J'ai un problème extrême et toutes les solutions que je peux imaginer sont compliquées. Selon mon expérience UNIX / Linux, il doit exister un moyen simple.
Je souhaite supprimer les 31 premiers octets de chaque fichier au format /foo/
. Chaque fichier est assez long. Eh bien, je suis sûr que quelqu'un me proposera une solution étonnamment facile que je ne peux tout simplement pas imaginer. Peut-être awk?
text-processing
files
sed
awk
von der tann
la source
la source
Réponses:
ou le plus rapide, grâce à la suggestion de Gilles:
Remarque: La queue Posix spécifie "-c +32" au lieu de "+ 32c" mais la queue par défaut de Solaris ne l'aime pas:
/usr/xpg4/bin/tail
va bien avec les deux syntaxes.la source
dd
ici est excessif,tail
c'est plus approprié (plus simple, moins de risque de faute de frappe, pas de messages parasites sur stderr).cut
? (ne devrait pas que la queue soit ... ASIS, il ne fonctionne pas pour moi .../usr/xpg4/bin
avance/usr/bin
sur votrePATH
ou vous serez coincé au début des années 1990. De nombreux unices (GNU, BusyBox, par exemple) ne supportent plus la+32c
syntaxe d' historique et le considèrent comme un fichier appelé+32c
(comme le requiert POSIX).Les commandes suivantes coupent les 31 premiers octets de
$file
(en utilisant$file~
une copie temporaire):Il vous suffit de répertorier ou de répertorier
find
tous les fichiers situés sous/foo/
et d’exécuter les deux opérations ci-dessus pour chaque fichier$file
trouvé.la source
tail -c +32
sort son entrée moins les 31 premiers octets. (Oui, l'argument est décalé de un.) Pour éditer un fichier à la place, utilisez sponge dans une boucle ou, si vous ne l'avez pas et ne voulez pas vous déranger, faites son travail dans le shell:Si les commandes sont interrompues pour une raison quelconque (par exemple, une panne de courant), il peut être difficile de déterminer où vous en êtes resté. L'écriture des nouveaux fichiers dans un répertoire séparé faciliterait les choses.
Si les fichiers sont vraiment volumineux (comme dans, assez gros pour avoir deux copies d'un seul problème, vous pouvez utiliser l' une des techniques mentionnées dans ce fil de discussion .
la source
Vous pouvez utiliser Vim en mode Ex:
%
sélectionner toutes les lignes!
commande d'exécutionx
sauver et fermerla source