Saya baru awk dan saya tidak tahu apakah mungkin menulis skrip awk yang melakukan ini:
Saya memiliki ratusan file data yang harus saya sortir. Untuk masing-masing saya menggunakan satu-liner berikut:
awk 'ORS=NR%3?" ":"\n" ' file1.tex > file1_sorted.tex
awk 'ORS=NR%3?" ":"\n" ' file2.tex > file2_sorted.tex
...
dan saya mendapatkan output yang saya butuhkan. Namun saya ingin memiliki skrip untuk mengotomatiskan tindakan ini, mengambil setiap file, menerapkan tindakan dan menulis file yang diurutkan yang sesuai.
Saya sangat menghargai bantuan Anda!
FNR==1
dilakukannya. =)Anda dapat menerapkan file dalam for for:
Atau di satu baris:
Karena Anda tidak menentukan shell yang mana,
basename
gunakan yang lebih standar daripada menggunakan sintaksis khusus shell${file%%.tex}
.sumber
shell
) dan menjalankan perintah di atas di dalam itu pada prompt. Atau buka terminal dan jalankan perintah di sana. Ada dua cara untuk menentukan skrip (awk, shell, dll): baik di baris perintah atau dalam file.awk
Perintah Anda dalam posting menggunakan formulir baris perintah; perintah "satu baris" saya juga merupakan bentuk baris perintah.Pertanyaan lama tetapi mengingat bahwa terakhir kali saya melihat satu komputer pribadi inti adalah satu dekade lalu, Anda dapat menggunakan gnu paralel
Untuk mengatasi ekspansi shell dan interpretasi kutipan
Gunakan glob yang tepat untuk memilih file input. Di sini saya menggunakan
{.}
untuk mengambil ekstensi dari nama output karena saya menambahkannya setelah itudi mana
X
jumlah prosesor yang ingin Anda gunakan, Anda masih dapat menggunakan 1. Ini akan memberi Andafile[1-9]_sorted.tex
sebagai outputsumber