Dengan menggunakan sed, bagaimana Anda mencetak karakter 'N' pertama dari sebuah baris?


110

Menggunakan sedapa satu liner untuk mencetak n karakter pertama ? Saya melakukan hal berikut:

grep -G 'defn -test.*' OctaneFullTest.clj  | sed ....

Jawaban:


209

Jangan gunakan sed, gunakan cut:

grep .... | cut -c 1-N

Jika Anda HARUS menggunakan sed:

grep ... | sed -e 's/^\(.\{12\}\).*/\1/'

2
Sebenarnya pada sistem Cygwin yang saya kerjakan sekarang cuttidak menghentikannya sementara seditu.
kqw

Atau bahkan sed -r 's/^(.{12}).*/\1/'.
fedorqui 'JADI berhenti merusak'

1
@fedorqui -rtampaknya tersedia di Linux, tetapi tidak di Mac.
Paul Tomblin

Tepatnya, itu tidak tersedia di OSX.
fedorqui 'SO berhenti melukai'

1
FYI: cut -c 1-N(di mana N adalah angka) tidak bekerja pada instalasi Cygwin saya (cygwin 2,6 v, dipotong v 8,25..) Pada OS X, gunakan sed -Ebukan sed -r, digunakan di tempat lain.
wrlee

45
colrm x

Misalnya, jika Anda membutuhkan 100 karakter pertama:

cat file |colrm 101 

Sudah ada selama bertahun-tahun dan di sebagian besar linux dan bsd (freebsd pasti), biasanya secara default. Saya tidak ingat pernah mengetik apt-get install colrm.


Ini tidak memberikan 50n karakter pertama. Ini memberikan n karakter untuk setiap baris teks
bsmoo

Dan colrmmengerti utf8.
Skippy le Grand Gourou

9

tidak harus menggunakan grep juga

sebuah contoh:

sed -n '/searchwords/{s/^\(.\{12\}\).*/\1/g;p}' file


4

Untuk mencetak N karakter pertama Anda dapat menghapus karakter N + 1 sampai akhir baris:

$ sed 's/.//5g' <<< "defn-test"
defn

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.