HAI,
mungkin ini sesuatu yang sangat mudah, tetapi saya tidak mengerti sekarang. Di Linux, shell, diberi file teks, bagaimana saya bisa melakukan sesuatu seperti, nama file kucing jadi saya hanya melihat baris pertama, baris ketiga, 5, 7, 9 dan seterusnya?
jika tidak dengan kucing, dengan perintah lain
Terima kasih
{print}
adalah tindakan default, jadiawk 'NR % 2 == 0' < myfile
sudah cukup.2 == 0
dengan2 == 1
untuk yang sebaliknya.Atau semacamnya
Untuk penjelasan cari halaman manual
sed
.sumber
sed
versi portabel yang menyelinap di pikiranku.sed -n '1d;p;n'
untuk garis genap misalnyaGunakan sed:
sumber
sed
bukan default.sed
Manual GNU gnu.org/software/sed/manual/html_node/Addresses.html#Addresses mengatakan "pertama ~ langkah ekstensi GNU ini ...". Tidak disebutkan--posix
. Ketika saya mencobagsed --posix -n 1~2p
(GNU sed 4.2.1), saya mengertigsed: -e expression #1, char 2: unknown command: ‘~’
.sumber
2 cara Anda bisa melakukannya dengan awk
ATAU hanya dengan shell
sumber
Pencarian sederhana di Google menunjukkan tautan ini: http://bash.cyberciti.biz/academic/write-odd-even-line-file/
Anda hanya perlu mengubah sedikit.
2 sen saya.
sumber
Belum menguji ini (tampaknya tidak berfungsi pada Mac OS X), tetapi GNU dan dukungan
first~step
sebagai pemilihan alamat, jadi misalnya:sed -n 1~2p file
akan mulai pada baris pertama dan mencetak setiap baris lainnya setelah itu.
sumber
sed
dalam instalasi dasar.Tidak dapat menguji, menemukan tautan: cat -n $ 1 | grep "$ ODDRE" | cut -b 8-> oddfile. $$
sumber
ODDRE
yang diatur. Tetapi jawaban itu hanya akan berfungsi jika file tersebut kurang dari sejuta baris.Anda dapat menggunakan perintah ini untuk meminta hasil
awk 'NR% 2 == 1'
sed -ne '1 ~ 2p'
sumber
ls -l
sini?