Komutu sözcük olarak ayırıcı olarak kes


10

Bir kelimeye dayalı olarak kesilecek herhangi bir kesme komutu var mı?

171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27

Çıkışı şöyle istiyorum:

171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD.

Nasıl yaklaşılır?


1
Hangi kelimeyi kastediyorsun?
Cyrus

ABCD, ayırıcı olarak kullanmak istediğim kelimedir. Ve ayrıca, bu bir günlük ve ABCD gibi, ben de someother anahtar kelimeler yaşıyorum. Genel olarak bir yaklaşım istiyorum
Anony

Yanıtlar:


16

Öneririm:

awk -F 'ABCD' '{print $1 FS "."}' file

Çıktı:

171212 16082784 6264 XXX xxxxxxxx İşlem XXXXX ABCD'yi iptal ediyor.

FSsınırlayıcınız "ABCD" yi içerir. "ABCD" bir normal ifadedir.


4

awk-Fkullanmak istediğiniz kelimeyi işaretlerseniz bu işi yapabilirsiniz :

$ awk -F 'test'  '{print $1;print $2}'  <<<  "onetesttwotest"                                                            
one
two

Sizin durumunuzda, bu şöyle olur:

$ awk -F 'ABCD' '{print $1,FS}' input.txt                                                                                
171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend  ABCD

Örneğinize bakılırsa, yalnızca ABCDbundan sonra her şeyi silmek için bir şeyler yazdırmaya çalışıyorsunuz , aynı zamanda bir seçenek:

$ awk '{print substr($0,0,match($0,/ABCD/)+4);}' input.txt                                                               
171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD.

Ayrıca 'ABCD'yi korumak istiyorlar.

Evet .. ABCD orada olmalı
Anony

Ben öneririm awk '{print gensub(/(.*ABCD\.).*/,"\\1",1)}'.
tatlı


3

grep çözüm:

grep -o '^.*ABCD\.' input.txt

Normal ifade, tekrarlanan ^herhangi bir karakterle başlayan ve dizeyle biten her bir satırla eşleşir . Ters eğik çizgi , noktanın özel anlamından kaçar.*ABCD.\. , sondaki .

Seçenek -o, grepkomuttan eşleşen bir satırın yalnızca eşleşen (boş olmayan) bölümlerini yazdırmasını söyleyecektir .


3

cutkendisi bu işi yapabilir. Bir kelimeye değil, .sınırlayıcıya dayanır .

Kullanım:

cut -f 1 -d '.' input.txt | xargs -I "%" echo %.

Çıktı

rooney@bond-pc:~$ cat input.txt 
171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27
rooney@bond-pc:~$ 
rooney@bond-pc:~$ cut -f 1 -d '.' input.txt | xargs -I "%" echo %.
171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD.

xargsburada yalnızca .dizenin sonuna eklemek için kullanılır ABCD.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.