2016-04-13 14 views
0

Bir dosyada satır aşağıda bir set var, ben çizginin aynı içeriğe sahip çıkışları sonra yeni bir satır eklemek için ancak bunun yerine uat_reset_fwd_outputs arasında o sed kullanma Test_sample_dataBir sonraki satıra desen eşleştirmesi çizgisi nasıl eklenir?

[serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs] 
[serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs] 

[serverClass:UAT_TEST_Forwarder:app:uat_test_inputs] 
[serverClass:UAT_TEST_Forwarder:app:uat_reset_fwd_outputs] 

The output should look like below: 

[serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs] 
[serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs] 
[serverClass:UAT_SAI_Forwarder:app:Test_sample_data] 

[serverClass:UAT_TEST_Forwarder:app:uat_test_inputs] 
[serverClass:UAT_TEST_Forwarder:app:uat_reset_fwd_outputs] 
[serverClass:UAT_TEST_Forwarder:app:Test_sample_data] 

cevap

0

bunu kullanın:

perl -i -lne 'print;if(/uat_reset_fwd_outputs/){s/uat_reset_fwd_outputs/Test_sample_data/;print $_}' your_file 
0

olmalıdır istiyorum:

Bu komut, "çıktılar" dizesini içeren tüm satırlarla eşleşir, satırın ilk bölümünü (\ 1 olarak) yakalar ve buna "Test_sample_data" ekler.

+0

Bu "Test_sample_data dize maç desen "çıkışları" değiştiriliyor Ama gerekir: Eğer yer değiştirme yapmak isterseniz

perl -lne 'print;if(/uat_reset_fwd_outputs/){s/uat_reset_fwd_outputs/Test_sample_data/;print $_}' your_file 

aşağıya kullanın. çıkış eşleme Desenin sonraki satırda eklenmelidir çıkış aşağıdaki gibi olmalıdır:. [ServerClass: UAT_TEST_Forwarder: Uygulama: uat_test_inputs] [ServerClass: UAT_TEST_Forwa rder: app: uat_reset_fwd_outputs] [serverClass: UAT_TEST_Forwarder: uygulama: Test_sample_data] – Sai

+0

Çıkış satırı değişmiyor. Bundan sonra yeni bir çizgi ekliyor. İşte bu \ 0 \ n \ 1'. Komutumu çalıştırmayı denedin mi? – dogbane

+0

evet, çıktı ve aşağıdaki gibi çıktı: sed 's /\(^.*\):.* çıkışlar. * $/\ 0 \ n \ 1: Test_sample_data]/g' pesting [serverClass : UAT_SAI_Forwarder: app: uat_sai_inputs] 0n [ServerClass: UAT_SAI_Forwarder: app: Test_sample_data] [ServerClass: UAT_TEST_Forwarder: app: uat_test_inputs] 0n [ServerClass: UAT_TEST_Forwarder: app: Test_sample_data] – Sai

0

bu deneyin:

sed '/:[^:]*outputs] *$/{h;s//:Test_sample_data]/;x;G}' file 

Güncelleme:

yeni hat outputs] ile biten herhangi bir satıra eklenecektir.

+0

O işe yaramadı. Bu konuda küçük bir düzeltme var. uat_reset_fwd_outputs sabit değil. uat_reset_fwd_outputs verdiğim bir örnek için, dosyada çıktılarla biten çok sayıda satır var. Ayrıca benimkini taşımak istiyorum GNU versiyonu değil. Mac kullanıyorum. – Sai

+0

Cevabımı güncelledim. – SLePort

İlgili konular