awk
ist auch nützlich für solche Dinge. Wenn Sie die Ausgabe Feldtrenn gesetzt OFS
:
$ awk -F"." -v OFS="_" '{print $1, $2}' file
6_5
6_10
7_2
10_11
Aber wenn Sie wirklich sed
Referenzen verwenden zurück müssen (hier mit erweiterten regulären Ausdrücken - beachten Sie, dass die Option manchmal -E
ist und manchmal nur grundlegende reguläre Ausdrücke unterstützt werden durch sed
) :
$ sed -r 's/([0-9]+)\.([0-9]+).*/\1_\2/' file
6_5
6_10
7_2
10_11
Wenn Sie an Ort und Stelle durchführen möchten ersetzen, entweder Sie awk/sed '...' file > tmp_file && mv tmp_file file
oder verwenden sed -i
(auf diesen Plattformen sagen kann, wo sie unterstützt wird, aber beachten Sie, dass es Unterschiede zwischen GNU 012.325.und BSD (macOS) sed
) oder gawk -i inplace
(GNU Awk).
Hinweis: In beiden Fällen verwende ich einen einzigen Befehl, anstatt einen anderen Befehl zu verwenden.
Sie könnten ein verwenden portabler '-E' Option anstelle von' -r'. –
@ Jonathan vielen Dank für Ihre gründlichen Änderungen, um die Links zu Docs zu entfernen. – fedorqui