Saya ingin memformat file teks saya untuk penampilan yang lebih baik. Jadi saya ingin perintah atau skrip shell yang akan memformat file saya sesuai harapan saya. File Input:
Index Name City
1. Ravi Bhuva Ahmedabad
2. Gaurav Bhuva Rajkot
3. Nimesh Godhasara Junagadh
4. Abhyuday Godhasara Nadiyad
.
.
100. abcd xyz
Berkas keluaran:
Index Name City
1. Ravi Bhuva Ahmedabad
2. Gaurav Bhuva Rajkot
3. Nimesh Godhasara Junagadh
4. Abhyuday Godhasara Nadiyad
.
.
100. abcd xyz
linux
command-line
formatting
shell-script
textfiles
ravibhuva9955
sumber
sumber
Name
kolom berisi ruang, itu harus dipisahkan dariCity
dengan sesuatu yang lain, jika tidak, tidak ada alat yang dapat memprosesnya dengan andal.Jawaban:
perl.
Asumsi: kota hanya memiliki satu kata.
keluaran
sumber
Anda perlu sesuatu untuk membatasi nama dari kota (karena kota mungkin juga memiliki lebih dari satu kata, mungkin). Apakah semua nama persis dua token (pertama + terakhir)? Jika demikian, Anda dapat mengasumsikan apa pun setelah indeks dan nama dua bagian adalah nama kota. Inilah yang melakukannya:
cat new.txt | sed 's/^\(\S\+\)\s/\1~/' | sed 's/^\(\S\+\s\+\S\+\)\s\+\(.*\)$/\1~\2/' | column -s \~ -t
meskipun label terakhir di atas (kota) harus disejajarkan secara manual.
sumber
sed -r 's/\s+/~/; s/\s+(\S+)$/~\1/' new.txt | column -s \~ -t
- dengan ini, pos akan diselaraskan secara otomatis.Sebagian besar sistem Linux menggunakan python. Menjalankan skrip python ini akan memberi Anda hasil yang Anda cari:
Saya menggunakan Anda asli 4 entri pertama di atas dan menghasilkan file output berikut:
sumber