2016-04-09 15 views
1

'dan sonra her şeyi kaldırmak için sed kullanımı Bir boşluktan sonra her şeyi nasıl kaldırabilirim? Eğer [[: space:]] yerine ':' kolonunu belirtirsem yapabilirim.[[: space:]]

$ cat t.sh 
echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \ 
    sed -r -e 's#.*\(DW_Prod.*\)[[:space:]].*#\\1#' 

$ ./t.sh 
DW_Prod\Facets\UNRCH_MBRS: UNRCH_Members.sql 
+1

Yan notu : Bir borudan sonra linebreak kaçmak gerekmez. –

+1

Sed bayraklarını ve bekletme desenindeki çifte kurtuluşu kurtulun: echo "echo" DW_Prod \\ Facets \\ UNRCH_MBRS: UNRCH_Members.sql "| sed 's #. * \ (DW_Prod. * \) [[: alan:]]. * # \ 1 #' ' –

+0

Tümünden harika cevaplar. İlk kronolojik olarak cevap olarak işaretledim. Çok teşekkürler. – lit

cevap

0

boşluk sonra her şeyi çıkarın olurdu:

echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | sed -r 's/([[:space:]]+).*/\1/' 
2

Sen -r ile ERE metachars sağlayan ve daha sonra ayraçları kaçan \(...\) tarafından geribaşvuru \1 devre dışı bırakarak ERE yakalama grupları (...) kaldırmış bulunuyoruz ters eğik çizgi \\1'dan kaçmak. Bu deneyin:

$ echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | \ 
    sed -r -e 's#.*(DW_Prod.*)[[:space:]].*#\1#' 
DW_Prod\Facets\UNRCH_MBRS: 

Tüm gerçekten olsa gerek geçerli:

$ echo "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql" | 
    sed 's#[[:space:]].*##' 
DW_Prod\Facets\UNRCH_MBRS: 
1
Sen grep -o (tam eşleme) ve bir alanı normal ifadeler kullanabilirsiniz

:
grep -o '^[^ ]*' <<< "DW_Prod\\Facets\\UNRCH_MBRS: UNRCH_Members.sql"

İlgili konular