Impossible de définir plusieurs caractères sur le séparateur de champs dans AWK
-
22-07-2019 - |
Question
Je veux avoir - [espace] comme séparateur de champ dans AWK.
Par exemple,
awk -F-[space] {' print $1 '}
Comment pouvez-vous avoir plusieurs caractères comme séparateur de champ dans AWK?
[modifier]
La sortie exacte de la commande de Vlad
$echo /Users/Sam/Dropbox/Education/Chemistry/Other\ materials/*.pdf | sed -e 's: : - :g'
/Users/Sam/Dropbox/Education/Chemistry/Other - materials/CHE_IB_LAB.pdf - /Users/Sam/Dropbox/Education/Chemistry/Other - materials/Lecture19_20_21.pdf
La sortie exacte de la commande de Vlad avec sed
$echo /Users/Sam/Dropbox/Education/Chemistry/Other\ materials/*.pdf
/Users/Sam/Dropbox/Education/Chemistry/Other materials/CHE_IB_LAB.pdf /Users/Sam/Dropbox/Education/Chemistry/Other materials/Lecture19_20_21.pdf
La solution
Vous connaissez votre citation :), mais sachez que le -F
de GNU awk
prend une expression régulière étendue (ERE) en tant qu'argument; vous devrez donc également échappe en conséquence si tu veux une correspondance textuelle par opposition à une correspondance ERE, par exemple
awk -F '- ' '{ print $1 }'
MISE À JOUR
Votre dernier commentaire n'est toujours pas clair.
- Quels sont les chemins complets des fichiers PDF sur votre disque
- quelle est la sortie exacte que vous attendez de ces fichiers?
J'ai besoin d'un exemple concret, par exemple
.-
pour les fichiers suivants:
../Phy/Phy1/file1.pdf ../Phy/file2.pdf ../Che/Che1/file3.pdf ../Che/file4.pdf ../file5.pdf ../Phy2/file6.pdf
-
je veux afficher:
PhyPhy1 file1.pdf - Phy file2.pdf - Che/Che1 file3.pdf - Che file4.pdf
Veuillez noter que, dans le cas des fichiers d'exemple ci-dessus, la commande:
echo lpr ../{Che,Phy}/{*.pdf,*/*.pdf}
affichera seulement :
lpr Che/file4.pdf
lpr Che/Che1/file3.pdf
lpr Phy/file2.pdf
lpr Phy/Phy1/file1.pdf
Commençons par régler cette partie, puis nous nous occuperons du tiret, etc.
MISE À JOUR
OK Veuillez exécuter l’une ou les deux commandes presque équivalentes suivantes:
echo Dropbox/Mas/edu/{Phy,Che}/*.pdf | sed -e 's: : - :g'
ls -1d Dropbox/Mas/edu/{Phy,Che}/*.pdf | paste -s -d '|' - | sed -e 's:|: - :g'
Modifiez ensuite votre message d'origine et ajoutez le texte suivant, séparé :
- la sortie exacte de la ou des commandes ci-dessus (copier / coller)
- la sortie exacte de la ou des commandes ci-dessus modifiées par vous en fonction de vos besoins