Linux la commande coupe - capture de la chaîne entre plusieurs postes
J'ai un fichier texte contenant des lignes très longues. Je veux obtenir seulement une partie du fichier en spécifiant plusieurs positions.
J'ai essayé cut
mais il semble donner tout le contraire inverse de ce dont j'ai besoin; il ne prend en compte que ce que je ne veux pas.
Ma coupe de code:
/bin/cat file.txt | /usr/bin/cut -f50-62,3414-5706427
Mon résultat attendu est d'avoir le fichier en entier, sauf pour les personnages 50-62 et les personnages 3414-5706427.
J'ai aussi pensé à sed
mais pas trouvé de moyen de faire sed
sortez-moi seulement les données dont j'ai besoin. Est-il une commande Linux pour inverser le résultat?
Vous devez vous connecter pour publier un commentaire.
edit: il y a une option pour
cut
qui ressemble, il fait ce que vous voulez:Sinon, vous pouvez utiliser natif bash la manipulation de la chaîne:
utilisation:
à partir d'un fichier:
Si vous voulez un spécifique de caractères, utilisez-c
-f
est pour les champs où vous spécifiez le séparateur de champs avec-d
sed
fera le travail pour vous: (mon arithmétique peut être un peu off)Ce n'est pas tout à fait clair que vos positions sont octet de postes dans l'ensemble du fichier, ou une colonne de positions dans des fichiers avec de très longues lignes (lignes de 3 KO sont inhabituelles et, a fortiori, 5 MO).
Cependant, vous pouvez faire face à la sélection de l'information sur de longues lignes à l'aide de
cut
:La différence entre les octets et les caractères des questions si vous utilisez UTF-8 comme le code jeu (et tous les caractères dans le fichier n'est pas en ASCII sous-ensemble de l'UTF-8).
Si vous avez affaire à des postes dans un fichier, puis vos options sont plus limitées. La plupart des utilitaires Unix sont basés autour de lignes plutôt qu'autre chose. Un maladroit option serait la
dd
commande:Vous pourriez avoir besoin d'ajuster le nombre de compenser basée sur 0 vs 1-base de calcul.