Bagaimana cara mengganti spasi putih dengan tab di linux dalam file teks tertentu?
Jawaban:
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'').
Saya pikir Anda bisa mencoba dengan awk
awk -v OFS="\t" '$1=$1' file1
atau SED jika Anda lebih suka
sed 's/[:blank:]+/,/g' thefile.txt > the_modified_copy.txt
atau bahkan tr
tr -s '\t' < thefile.txt | tr '\t' ' ' > the_modified_copy.txt
atau versi sederhana dari solusi tr yang disarankan oleh Sam Bisbee
tr ' ' \\t < someFile > someFile
tr ' ' \\t < someFile > someFile
ls -l | sed "s/ \+/ /g"
awk -v OFS="\t" '$1=$1' file1
saya perhatikan bahwa jika Anda memiliki garis yang dimulai dengan angka 0 (misalnya 0 1 2
), maka garis tersebut akan dihilangkan dari hasil.
Menggunakan Perl :
perl -p -i -e 's/ /\t/g' file.txt
perl -p -i -e 's/\t/ /g' *.java
s/ {4}/
mengubah indentasi 4 ruang menjadi tab.
perintah tr yang lebih baik :
tr [:blank:] \\t
Ini akan membersihkan keluaran say, unzip -l , untuk diproses lebih lanjut dengan grep, cut, dll.
misalnya,
unzip -l some-jars-and-textfiles.zip | tr [:blank:] \\t | cut -f 5 | grep jar
tr [:blank:] \\t
Unduh dan jalankan skrip berikut untuk secara rekursif mengonversi tab lunak ke tab keras dalam file teks biasa.
Tempatkan dan jalankan skrip dari dalam folder yang berisi file teks biasa.
#!/bin/bash
find . -type f -and -not -path './.git/*' -exec grep -Iq . {} \; -and -print | while read -r file; do {
echo "Converting... "$file"";
data=$(unexpand --first-only -t 4 "$file");
rm "$file";
echo "$data" > "$file";
}; done;
Anda juga bisa menggunakan astyle
. Saya merasa ini cukup berguna dan memiliki beberapa opsi juga:
Tab and Bracket Options:
If no indentation option is set, the default option of 4 spaces will be used. Equivalent to -s4 --indent=spaces=4. If no brackets option is set, the
brackets will not be changed.
--indent=spaces, --indent=spaces=#, -s, -s#
Indent using # spaces per indent. Between 1 to 20. Not specifying # will result in a default of 4 spaces per indent.
--indent=tab, --indent=tab=#, -t, -t#
Indent using tab characters, assuming that each tab is # spaces long. Between 1 and 20. Not specifying # will result in a default assumption of
4 spaces per tab.`
Jika Anda berbicara tentang mengganti semua spasi berurutan pada baris dengan tab, maka tr -s '[:blank:]' '\t'
.
[root@sysresccd /run/archiso/img_dev]# sfdisk -l -q -o Device,Start /dev/sda
Device Start
/dev/sda1 2048
/dev/sda2 411648
/dev/sda3 2508800
/dev/sda4 10639360
/dev/sda5 75307008
/dev/sda6 96278528
/dev/sda7 115809778
[root@sysresccd /run/archiso/img_dev]# sfdisk -l -q -o Device,Start /dev/sda | tr -s '[:blank:]' '\t'
Device Start
/dev/sda1 2048
/dev/sda2 411648
/dev/sda3 2508800
/dev/sda4 10639360
/dev/sda5 75307008
/dev/sda6 96278528
/dev/sda7 115809778
Jika Anda berbicara tentang mengganti semua spasi (misalnya spasi, tab, baris baru, dll.) Maka tr -s '[:space:]'
.
[root@sysresccd /run/archiso/img_dev]# sfdisk -l -q -o Device,Start /dev/sda | tr -s '[:space:]' '\t'
Device Start /dev/sda1 2048 /dev/sda2 411648 /dev/sda3 2508800 /dev/sda4 10639360 /dev/sda5 75307008 /dev/sda6 96278528 /dev/sda7 115809778
Jika Anda berbicara tentang memperbaiki file yang rusak tab, gunakan expand
dan unexpand
seperti yang disebutkan dalam jawaban lain.
Ini akan menggantikan spasi berurutan dengan satu spasi (tetapi bukan tab).
tr -s '[:blank:]'
Ini akan mengganti spasi berurutan dengan tab.
tr -s '[:blank:]' '\t'
-c
itu menggantikan karakter berurutan yang bukan spasi.
tr
ataused
.