Bagaimana saya bisa mencocokkan spasi putih di sed? Dalam data saya, saya ingin mencocokkan semua 3+ karakter spasi putih berikutnya (ruang tab) dan menggantinya dengan 2 spasi. Bagaimana ini bisa dilakukan?
Bagaimana saya bisa mencocokkan spasi putih di sed? Dalam data saya, saya ingin mencocokkan semua 3+ karakter spasi putih berikutnya (ruang tab) dan menggantinya dengan 2 spasi. Bagaimana ini bisa dilakukan?
Jawaban:
Kelas karakter \sakan cocok dengan karakter spasi <tab>dan <space>.
Sebagai contoh:
$ sed -e "s/\s\{3,\}/ /g" inputFile
akan mengganti setiap urutan setidaknya 3 spasi putih dengan dua spasi.
KETERANGAN : Untuk kepatuhan POSIX, gunakan kelas karakter [[:space:]]alih-alih \s, karena yang terakhir adalah ekstensi sed GNU. Lihat spesifikasi POSIX untuk sed dan BRE
sedsaya harus menggunakan [[:space:]]karena \stidak bekerja untuk saya. Mungkin \sadalah GNU sed ekstensi?
[[:space:]satu dapat menggunakan [[:blank:]]yang tidak cocok dengan tab dan spasi horisontal saja (tetapi tidak ada baris baru, tab vertikal dll).
Ini berfungsi pada MacOS 10.8:
sed -E "s/[[:space:]]+/ /g"
sed "s/[[:space:]]\+/ /g"mencocokkan satu atau lebih spasi.
-Ebendera juga.
Beberapa versi sed yang lebih lama mungkin tidak dikenali sebagai token pencocokan spasi putih. Dalam hal ini Anda dapat mencocokkan urutan satu atau lebih spasi dan tab dengan '[XZ] [XZ] *' di mana X adalah spasi dan Z adalah tab.
sed 's/[ \t]*/"space or tab"/'
sedapa pun pada sistem apa pun? Jika tidak, mungkin perlu disebutkan di mana ini bekerja dengan cara yang sama dengan jawaban lainnya, supaya kita tahu keterbatasan dan di mana ini mungkin tidak memiliki hasil yang diinginkan.