Une réponse à une autre question suggère sed -i 's/original/replacement/g' file.txt
pour remplacer des mots spécifiques dans un fichier texte. Ma situation de départ ressemble à ceci:
Item: PRF
Type: File
Item: AOX
Type: Folder
Item: DD4
Type: File
Ma situation finale devrait ressembler à ceci:
Item: PRF^Type: File
Item: AOX^Type: Folder
Item: DD4^Type: File
Notes : (1) L'interface Ask Ubuntu semble supprimer certains des espaces avant Item: et Type:. En réalité, il y a en fait huit espaces en tête. (2) J'ai peut-être commis une erreur en utilisant des exemples simplistes de Item. Les éléments sont en réalité des chemins d'accès partiels de Windows (manquant par exemple D:), dont certains sont assez longs. Un exemple plus précis serait Item: Folder\Some Folder\A file name.txt.
J'ai essayé cela, avec et sans guillemets doubles:
sed -i 's/\n" Type: "/\^"Type: "/g' file.txt
Cela ne me donne pas d'erreurs, mais aussi aucun changement. J'ai également essayé ceci:
awk '/ " Item: " / { printf "%s", $0"^" } / " Type: " / { gsub(/^[ \t]+/,"",$0); print $0 }' source.txt
J'ai essayé cela pour vérifier que je changerais uniquement les entrées avec huit espaces vides avant "Item". Cela n'a pas fonctionné. En essayant sans espaces et sans guillemets doubles, comme dans la réponse (ci-dessous), a également échoué. En essayant avec gawk -i inplace
a donné source.txt contenant zéro octet.
Mon titre spécifiait initialement sed
. Une réponse proposant awk
m'a alerté sur cette alternative, qui (maintenant que j'y pense) semble plus capable. Mais je ne peux pas comprendre comment le faire fonctionner.