J'ai un fichier texte dans lequel certaines lignes sont sous la forme: et je souhaite remplacer les valeurs dans Key1 avec le texte_to_copy_x.
Donc, je peux obtenir quelque chose comme: p> Comment puis-je traiter ce fichier à bash (préférable) ou python?
Info: text_to_copy_x se termine par un espace blanc final que je ne veux pas envisager. Merci p> p>
3 Réponses :
Vous pouvez y parvenir avec sed code>
Presque fait, seule une chose mineure parce que certains "text_to_copy_x" (pas tous) ont un espace blanc finissant que je ne veux pas copier. à l'intérieur de la valeur clé. Comment puis-je éviter ça? Pour le moment, le résultat est similaire à: une clé de texte = "text_to_copy_2" key2 = "value4", text_to_copy_2
Mis à jour la regex pour exclure l'espace blanc
Petit problème que je viens de remarquer. Certaines "text_to copy_x" ont un espace blanc à l'intérieur et avec votre dernière modification, seule la première partie est prise. Par exemple, je reçois "text_to" et non "text_to copy_x". Pouvez-vous mettre à jour la regex pour soutenir cela? Merci
Mise à jour de la regex
awk -F'"' '$2!="" {print $1 "\042" substr($5,2) "\042" $3 "\042" $4 "\042" $5} $2=="" {print}' <(sed 's| *$||' input) Firstly sed removes all trailing spaces from your input file, as you do not want to consider them.Then awk proceeds with that result, using " as delimiter.
J'ai vu que j'ai une ligne avec 3 clés et autres avec 2 et que la commande SED avec 3 clés ne fonctionne pas. Il est possible de le mettre à jour pour avoir un nombre variable de clés? Par exemple, une ligne est: une clé de texte1 = "value1" key2 = "text_to_copy_2" key3 = "value4", text_to_copy_2
@Giacota Vous devriez ouvrir une nouvelle question pour cela. Aussi, voir quoi faire quand quelqu'un répond à votre question << a href = "https://stackoverflow.com/help/someone-answers"> Stackoverflow.com/help/someone-answers >.
Entendu. Tnx
avec un SED qui a un drapeau -E code> pour utiliser ERES (E.G. GNU SED ou OSX / BSD SED):
$ sed -E 's/(key1=")[^"]*(".*,(.*[^[:space:]]))/\1\3\2/' file
some text key1="text_to_copy_1" key2="value2",text_to_copy_1
some text
some text key1="text_to_copy_2" key2="value4",text_to_copy_2
some text
Où est text_to_copy fin b> - toujours à la fin de la ligne?
WRT
que je ne veux pas considérer code> - ce n'est jamais une option, vous devez déterminer s'il faut y inclure dans le cadre du texte de remplacement ou non. Je suppose que vous voulez dire
que je ne veux pas faire partie du texte que je copie dans Key1 = "..." code>.