İlk satırdan biriyle dönmek ve erken çıkmak için sed kullanmak nasıl?
'denHow to use sed to replace only the first occurrence in a file?
gördüm Ne istediğimin çoğu için:
sed -n '0,/.*\(something\).*/s//\1/p'
Bu, bir şeyin ilk eşleşmesini bulur ve onu çıkarır (tabiki benim gerçek örneğim daha karmaşıktır) . Sed'in erken kalkmasını sağlayacak bir 'bırak' komutu olduğunu biliyorum, ama istediğim davranışı elde etmek için 'q' ile yukarıdaki satırı birleştirmeyi bilmiyorum.
Bazı örneklerde gördüğümüz gibi, 'p' yi {p; q;} ile değiştirmeyi denedim, ancak bu açıkça çalışmıyor.
Ne aldığınızı ve ne istediğinizi ve nasıl farklı olduklarını gösterir misiniz? "Echo -e" aaa 111 aaa \ nbbb 111 bbb "| sed -n '0, /. * \ (111 \). */S // \ 1/p' 'yazdım ve bir tane" 111 "aldım. Sonra ben eko -e aaa 111 aaa \ nbbb 111 bbb "| sed -n '0,/\ (. * \ (111 \). * \)/S // \ 1/p' Tam olarak ne elde ettiğini ve "aaa 111 aaa" çıktısını aldığımdan emin olmak istedim. 'Q' kullanmıyorum dikkat edin. Senin için nasıl "çalışmıyor". –
Sizin yönteminiz doğru çıktıyı üretir, ancak daha fazla iş olmamasına rağmen dev dosyanın tamamı için veya bir boru hattında kullanıldığında, dosyanın tamamını işlemeye devam eder.Benim özel kullanım durumum, son işlem için dalın kullanıldığı bir git-p4 içe aktarılmış ağaçta 'git log' ile bulmaktı. git log (-n olmadan çağrıldığında, her bir işlemin günlüğe kaydedileceği kaydediliyor (yüzlerce binlerce benim için). '-n' için gitmenin ne değeri verileceğini bilemeyiz. Benim çözümüm: git günlük | -n '0, /. * \ [git-p4:. * \/\/depo \/blah \/\ ([^ \ /] * \) \ /.*/ s // \ 1/p;/\ [git-p4/q ' – nosatalian