Impossible de définir plusieurs caractères sur le séparateur de champs dans AWK

StackOverflow https://stackoverflow.com/questions/645263

  •  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
Était-ce utile?

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.

  1. Quels sont les chemins complets des fichiers PDF sur votre disque
  2. quelle est la sortie exacte que vous attendez de ces fichiers?

J'ai besoin d'un exemple concret, par exemple

.
  1. pour les fichiers suivants:

    ../Phy/Phy1/file1.pdf
    ../Phy/file2.pdf
    ../Che/Che1/file3.pdf
    ../Che/file4.pdf
    ../file5.pdf
    ../Phy2/file6.pdf
    
  2. 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é :

  1. la sortie exacte de la ou des commandes ci-dessus (copier / coller)
  2. la sortie exacte de la ou des commandes ci-dessus modifiées par vous en fonction de vos besoins
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top