Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

טיפים - החלפת / מחיקת תווי סוף שורה

Anonymous - 04/09/2015 - 16:59
נושא ההודעה: החלפת / מחיקת תווי סוף שורה
לעיתים אנחנו רוצים להחליף או למחוק את תווי סוף שורה (newline).

לדוגמא אנחנו עובדים עם SQL, והרצנו שאילתת select שמחזירה לנו את הערכים כאוסף של שורות, ואנחנו רוצים להשתמש בערכים האלה שהם מופרדים בפסיקים בשביל שאילתת update.

במקום להסתבך עם סקריפטים יש כלי פשוט שיחליף את תווי סוף שורה בפסיקים (או בכל תו אחר שתרצו, או ימחוק אותם).

קישור: http://www.convertforfree.com/line-breaks-replacer
Anonymous - 04/09/2015 - 17:24
נושא ההודעה:
sed hello to say
Anonymous - 05/09/2015 - 15:11
נושא ההודעה:
Anonymous :
sed hello to say


נכון שאפשר להשתמש ב-sed אבל הכלי הזה הוא אופציה נוספת למי שלא רוצה להשתמש בסקריפטים לכזאת משימה פשוטה.
Anonymous - 07/09/2015 - 21:06
נושא ההודעה:
Anonymous :
sed hello to say


I'd really like to see how one can sed newlines with something else..
Really, I'm too dumb to figure out how to do that...
Anonymous - 07/09/2015 - 21:23
נושא ההודעה:
tr אפילו יותר קל

קוד:

cat /etc/shells | tr -d '\n'


ינון
Anonymous - 07/09/2015 - 21:49
נושא ההודעה:
Anonymous :
tr אפילו יותר קל

קוד:

cat /etc/shells | tr -d '\n'


ינון


האם אפשר לעשות regex שמשתרע על פני יותר משורה אחת?
Anonymous - 09/09/2015 - 08:37
נושא ההודעה:
לא ממש. הדרך היחידה לעשות את זה ב־sed היא להתחיל לשמור מידע באוגר.

ב־awk (ובעקבות כך גם בפרל) אפשר להגדיר מחדש את ה־Record Seperator. לדוגמה, בדביאן יש לא מעט קבצים שבנוים עם בלוקים של שורות וכל בלוק כזה מופרד ע"י שורת רווח. אפשר להגדיר את ה־record seperator להיות שני תווי מעבר שורה כדי להתייחס לכל בלוק כ"רשומה".

בפרל אפשר גם להגדיר ביטויים רגולריים שפועלים על כל השורות. אבל אם משתמשים בפרל "כמו ב־sed" - ‏ perl -p -e 's/a/b'‎ , עדיין כל שורה נקראת בנפרד. כדי לעבוד על כל השורות ביחד צריכים לקרוא את כולן. לדוגמה:
קוד:

perl -e 'my $text = join ("", (<>)); $text =~ s/h\n.u/--/ms; print $text' /etc/shells

כל הזמנים הם GMT + 2 שעות