0
votes

Linux: écrivez dans un fichier avec des champs, conservant les colonnes alignées

J'essaie d'écrire dans un fichier aligné de colonne ( / etc / fstab code>) tout en conservant la mise en forme du fichier.

Le fichier contient: p>

tmpfs  /dev/shm  tmpfs  defaults,nodev,nosuid,noexec  0  0


2 commentaires

Le fichier pourrait avoir plus de lignes , bien sûr, APEND IT ECHO "TMPFS / Dev / shm TMPFS par défaut, NODEV, NOSUID, NOEXEC 0 0 0" >> / etc / FSTAB; . impliquant un nombre différent d'espaces entre les champs , vous n'avez pas besoin de l'analyser.


Plus de lignes, impliquant un nombre différent d'espaces entre champs Comment "nombre de lignes" se connecte-t-il avec "nombre d'espaces entre champs"? Je ne peux pas avoir deux lignes avec un nombre différent d'espaces? Unix.stackexchange.com/questions/212450/... Vous y avez même un exemple sur le fstab.


3 Réponses :


0
votes

Vous pouvez utiliser echo -e et onglet (au lieu des espaces). Pour l'onglet, vous mettez \ t et pour la nouvelle ligne, vous mettez \ n Dis que je veux ajouter ces deux lignes à un fichier: xxx

la commande sera comme ceci: xxx

N'oubliez pas le double Quots "" : -)


1 commentaires

Merci d'avoir répondu. Cependant, votre solution génère une sortie qui n'est pas alignée sur la première ligne. Par exemple, il y aurait un équivalent de 7 espaces entre les deux derniers "0" au lieu d'un espace.



2
votes

par exemple: modifier le code suivant en conséquence ...

cat file.txt | awk '{ printf ("%-6s   %5d %4s %3s  %4d    %8.3f%8.3f%8.3f \n", $1, $2, $3, $4, $5, $6, $7, $8) }' 


3 commentaires

% 5D Pourquoi? % 8.3f% 8.3f% 8.3f Pourquoi? C'est FSTAB - Le deuxième champ est un chemin, et il y a des champs max 6 (à moins que je ne connaisse rien).


oh c'est quelque chose que j'ai utilisé dans mes fichiers .. peu importe, dans mon fichier, il contient trois flottes


Vous n'avez pas besoin chat . Il suffit de rediriger le fichier sur awk directement



1
votes

Étape 1. Ajoutez la ligne ne se souciant pas de la mise en forme.

echo 'tmpfs  /dev/shm  tmpfs  defaults,nodev,nosuid,noexec  0  0' >> /etc/fstab


0 commentaires