ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
אורח · ·
 

הודעה פורסם: 09/08/2014 - 13:12
נושא ההודעה: זקוק לעזרה ב bash , שנושא text filter או regexp

יש לי קובץ גדול מאוד של שמות .
אני מעוניין למחוק כל שורה שמכילה את אותה אות (וגודל) אשר חוזרת פעמיים או יותר ברצף,

לדוגמה tildaa זה ביטוי שאני מעוניין למחוק
לדוגמה tildata אני מעוניין להשאיר

לצערי אני לא כל כך בקיא ב awk אני יודע קצת sed


אני יכול לעשות את זה בצורה לא יעילה כמו
cat file|tr 'aa' ' ' |uniq

אבל זה לא כל כך יעיל

אני אשמח ללמוד דרכים יעילות מכל מי שיכול לזרוק לי עצם בנושא

במקביל אתחיל ללמוד ברצינות את awk
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 09/08/2014 - 13:49
נושא ההודעה:

צריכים להשתמש ב־back references:
קוד:

$ (echo aba; echo aaa) | sed  '/\(.\)\1/d'
aba
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 10/08/2014 - 08:57
נושא ההודעה:

נניח שאני רוצה , שלא תהיינה חזרה כלל על אות נוספת יותר מפעם אחת ?

כלומר

aba נפסל
aab נפסל

abd חוקי
dbb נפסל
bdcr חוקי

איזה ביטוי רגולרי מתאים ?
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 10/08/2014 - 14:13
נושא ההודעה:

Anonymous :
נניח שאני רוצה , שלא תהיינה חזרה כלל על אות נוספת יותר מפעם אחת ?

כלומר

aba נפסל
aab נפסל

abd חוקי
dbb נפסל
bdcr חוקי

איזה ביטוי רגולרי מתאים ?

רק צריך להוסיף .* (נקודה כוכבית, מה שמאפשר לכל טקסט להיות בין שני המופעים)
קוד:
(echo aba; echo aaa; echo abd; echo dbb; echo bdcr ) | sed  '/\(.\).*\1/d'

כדאי מאוד לתרגל regex-ים. זה כלי מאוד חזק בניתוח טקסטים/מחרוזות.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח
  2. אורח [צפריר]
  3. אורח
  4. אורח