La réponse acceptée fournit l'approche que j'ai utilisée pour supprimer des URL, etc. de mes fichiers. Cependant, il a laissé des lignes "vides". Voici une solution.
sed -i -e 's/http[s]\?:\/\/\S*//g ; s/www\.\S*//g ; s/ftp:\S*//g' input_file
perl -i -pe 's/^'`echo "\012"`'${2,}//g' input_file
Les drapeaux GNU sed, les expressions utilisées sont:
-i Edit in-place
-e [-e script] --expression=script : basically, add the commands in script
(expression) to the set of commands to be run while processing the input
^ Match start of line
$ Match end of line
? Match one or more of preceding regular expression
{2,} Match 2 or more of preceding regular expression
\S* Any non-space character; alternative to: [^[:space:]]*
Cependant,
sed -i -e 's/http[s]\?:\/\/\S*//g ; s/www\.\S*//g ; s/ftp:\S*//g'
laisse le caractère non imprimable (s), vraisemblablement \n
(sauts de ligne). Approches basées sur la norme sed
pour éliminer les lignes, les onglets et les espaces "vides", par ex.
sed -i 's/^[ \t]*//; s/[ \t]*$//'
ne fonctionnent pas, ici: si vous n'utilisez pas une « étiquette de branche » pour traiter les nouvelles lignes, vous ne pouvez pas les remplacer en utilisant sed (qui lit l'entrée d'une ligne à la fois).
La solution est d'utiliser l'expression perl suivante:
perl -i -pe 's/^'`echo "\012"`'${2,}//g'
qui utilise une substitution de la coque,
pour remplacer une valeur octal
(c.-à-un saut de ligne, \n
), qui se produit 2 fois ou plus,
(sinon nous déballer toutes les lignes), avec autre chose; ici:
dire, rien.
[La deuxième référence ci-dessous fournit une table merveilleuse de ces valeurs!]
Les drapeaux perl utilisés sont:
-p Places a printing loop around your command,
so that it acts on each line of standard input
-i Edit in-place
-e Allows you to provide the program as an argument,
rather than in a file
Références:
Exemple:
$ cat url_test_input.txt
Some text ...
https://stackoverflow.com/questions/4283344/sed-to-remove-urls-from-a-file
https://www.google.ca/search?dcr=0&ei=QCsyWtbYF43YjwPpzKyQAQ&q=python+remove++citations&oq=python+remove++citations&gs_l=psy-ab.3...1806.1806.0.2004.1.1.0.0.0.0.61.61.1.1.0....0...1c.1.64.psy-ab..0.0.0....0.-cxpNc6youY
http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html
https://bbengfort.github.io/tutorials/2016/05/19/text-classification-nltk-sckit-learn.html
http://datasynce.org/2017/05/sentiment-analysis-on-python-through-textblob/
https://www.google.ca/?q=halifax&gws_rd=cr&dcr=0&ei=j7UyWuGKM47SjwOq-ojgCw
http://www.google.ca/?q=halifax&gws_rd=cr&dcr=0&ei=j7UyWuGKM47SjwOq-ojgCw
www.google.ca/?q=halifax&gws_rd=cr&dcr=0&ei=j7UyWuGKM47SjwOq-ojgCw
ftp://ftp.ncbi.nlm.nih.gov/
ftp://ftp.ncbi.nlm.nih.gov/1000genomes/ftp/alignment_indices/20100804.alignment.index
Some more text.
$ sed -e 's/http[s]\?:\/\/\S*//g ; s/www\.\S*//g ; s/ftp:\S*//g' url_test_input.txt > a
$ cat a
Some text ...
Some more text.
$ perl -i -pe 's/^'`echo "\012"`'${2,}//g' a
Some text ...
Some more text.
$
Lorsque vous travaillez avec urls, fichier chemins, etc, je préfère utiliser "|" comme séparateur sed donc je ne dois pas échapper /. Exemple: sed 's/chemin/vers/un/fichier/|/newpath/vers/nouveau/fichier/| g' –
@ JP19, comme ça, essayerait cela – daydreamer