Użyj programu unexand (1)
UNEXPAND(1) User Commands UNEXPAND(1)
NAME
unexpand - convert spaces to tabs
SYNOPSIS
unexpand [OPTION]... [FILE]...
DESCRIPTION
Convert blanks in each FILE to tabs, writing to standard output. With
no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options
too.
-a, --all
convert all blanks, instead of just initial blanks
--first-only
convert only leading sequences of blanks (overrides -a)
-t, --tabs=N
have tabs N characters apart instead of 8 (enables -a)
-t, --tabs=LIST
use comma separated LIST of tab positions (enables -a)
--help display this help and exit
--version
output version information and exit
. . .
STANDARDS
The expand and unexpand utilities conform to IEEE Std 1003.1-2001
(``POSIX.1'').
tr
lubsed
.Myślę, że możesz spróbować z awk
lub SED, jeśli wolisz
lub nawet tr
lub uproszczona wersja roztworu tr zasugerowanego przez Sama Bisbee
źródło
tr ' ' \\t < someFile > someFile
ls -l | sed "s/ \+/ /g"
awk -v OFS="\t" '$1=$1' file1
Zauważyłem, że jeśli masz początek wiersza o numerze 0 (np0 1 2
), wówczas linia zostanie pominięta z wyniku.Korzystanie z Perla :
źródło
perl -p -i -e 's/\t/ /g' *.java
s/ {4}/
konwertowałem wcięcia z 4 spacjami na tabulatory.lepsze polecenie tr :
Spowoduje to wyczyszczenie danych wyjściowych polecenia powiedzmy unzip -l do dalszego przetwarzania za pomocą grep, cut itp.
na przykład,
źródło
tr [:blank:] \\t
Pobierz i uruchom następujący skrypt, aby rekurencyjnie konwertować miękkie karty na twarde w zwykłych plikach tekstowych.
Umieść i uruchom skrypt z wnętrza folderu zawierającego zwykłe pliki tekstowe.
źródło
Przykładowe polecenie konwersji każdego pliku .js z bieżącego katalogu na tabulatory (konwertowane są tylko spacje początkowe):
źródło
Możesz także użyć
astyle
. Uważam, że jest całkiem przydatny i ma też kilka opcji:źródło
Jeśli mówisz o zastąpieniu wszystkich kolejnych spacji w wierszu tabulatorem, to
tr -s '[:blank:]' '\t'
.Jeśli mówisz o zamianie wszystkich białych znaków (np. Spacja, tabulator, nowa linia, itp.) To
tr -s '[:space:]'
.Jeśli mówisz o naprawianiu pliku uszkodzonego na karcie, użyj
expand
iunexpand
jak wspomniano w innych odpowiedziach.źródło
Korzystanie sed :
lub
źródło
Spowoduje to zastąpienie kolejnych spacji jedną spacją (ale nie tabulatorem).
Spowoduje to zastąpienie kolejnych spacji tabulatorem.
źródło
-c
to zastępuje kolejne znaki, które nie są spacjami.