[sed] Verwenden Sie sed, um Tabulatorzeichen unter MacOS und Linux zu ersetzen

einpacken

Durch die Verwendung von ASCII-Code können Sie das Tabulatorzeichen unter MacOS und Linux auf dieselbe Weise ersetzen.

TAB="$(printf '\\\011')"
printf "hoge\tfuga\n" | sed "s/${TAB}/,/g"

sed OS abhängig (BSD sed vs GNU sed)

Als Beispiel für die Verwendung von sed habe ich häufig das folgende Skript verwendet, das Tabulatoren durch Kommas trennt.

# Linux
$ printf "foo\tbar\n"
foo    bar
$ printf "foo\tbar\n" | sed "s/\t/,/g"
foo,bar

Die Methode: point_up: funktioniert jedoch unter macOS nicht gut.

# macOS
$ printf "foo\tbar\n"
foo    bar
$ printf "foo\tbar\n" | sed "s/\t/,/g"
foo    bar # <-Nicht geändert!

Anscheinend ist dieser Unterschied darauf zurückzuführen, dass macOS "BSD sed" und Linux "GNU sed" verwendet.

Was mit dem Ersetzen von Tabulatorzeichen in "BSD sed" zu tun ist, wurde in einem früheren Qiita-Artikel erwähnt: bow:

(Gleicher Titel, aber anderer Artikel)

Da die Verwendung der oben genannten Methode jedoch begrenzt ist, wollte ich etwas mehr Vielseitigkeit, aber es gab den folgenden Artikel.

Oben wurde LF (Zeilenvorschub) unter Verwendung von ASCII-Code wie folgt ausgedrückt.

LF=$(printf '\\\012_')
LF=${LF%_}

echo "hogehoge\nfoo\nbar" | sed 's/\\n/'"$LF"'/g'

Ich dachte, dass diese Methode so wie sie ist auf Tabulatorzeichen angewendet werden könnte, und als ich sie verifizierte, funktionierte sie einwandfrei.

#Die horizontale Registerkarte (HT) ist im ASCII-Code 011
TAB="$(printf '\\\011')" 
printf "hoge\tfuga\n" | sed "s/${TAB}/,/g"

Sie können das Tabulatorzeichen jetzt unter MacOS und Linux auf dieselbe Weise ersetzen.

Überprüfungsumgebung

# macOS
- OS: Catalina 10.15.6 19G2021 x86_64
- Kernel: 19.6.0
- Shell: zsh 5.7.1

# Linux
- OS: Linux Mint 20 x86_64
- kernel: 5.4.0-47-generic
- shell: bash 5.0.17

Recommended Posts

[sed] Verwenden Sie sed, um Tabulatorzeichen unter MacOS und Linux zu ersetzen
Verwenden Sie die Unicodedata-Bibliothek von Python, um Zeichen in voller und halber Breite anzuzeigen
Ich möchte Linux auf dem Mac verwenden
Setzen Sie unter Ubuntu Linux Tab auf q
Anfänger! Grundlegende Linux-Befehle und Verwendung!
Verwendung von C216 Audio Controller unter Arch Linux
Vorbereiten der Verwendung von Ansible auf einem vorhandenen Linux-Server
Ich möchte OpenJDK 11 mit Ubuntu Linux 18.04 LTS / 18.10 verwenden
[Tipps] Verwendung des iPhone als Webkamera unter Linux
[Für Anfänger] Verwendung der for-Anweisung unter Linux (Variablen usw.)
Installieren Sie pyenv auf MacBookAir und wechseln Sie Python zur Verwendung
Wenn Sie python2.x unter modernem Gentoo Linux verwenden möchten
Was tun, wenn Sie unter Linux kein WLAN verwenden können?
Weisen Sie Linux eine lokale Linkadresse zu und verwenden Sie DNS-SD / SSDP
Verwenden Sie Github Desktop unter Linux
Aufnahme und Wiedergabe unter Linux
Verwenden Sie Linux unter Windows 10 (WSL2)
Ich möchte Shortcut-Übersetzungen wie die DeepL-App auch unter Linux verwenden
So richten Sie OMC Log Analytics ein und verwenden es - Linux-Version-
So verwenden Sie Python in Pyenv unter MacOS mit PyCall
So zeigen Sie PDF-Auflösung und detaillierte Informationen unter Linux an (pdfinfo)
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Python 3.6 unter Windows ... und zu Xamarin.
So installieren und verwenden Sie Tesseract-OCR
Verwendung von Dataiku unter Windows
Hinweise zur Verwendung von Pywinauto
So installieren Sie das Graph-Tool unter macOS
So installieren Sie VMware-Tools unter Linux
Hinweise zur Verwendung von featuretools
Wie benutzt man Homebrew in Debian?
Verwendung von .bash_profile und .bashrc
So installieren und verwenden Sie Graphviz
Verwenden Sie Linux-Befehle auf Android-Geräten
[C-Sprache] Verwendung der Krypta-Funktion unter Linux [Passwort-Hashing]
Erstellen Sie Linux in einer Windows-Umgebung. Schritte zum Installieren und Migrieren von Laradock