โอ้ว พระเจ้ายอด มันจอร์ชมาก ทำงานกับ Text Stream

ไปเสียเวลาในการเขียนโปรแกรมเช็คคำอยู่นานสองนาน แต่ที่ไหนได้ มันมีโปรแกรมที่ชื่อว่า

SED (stream editor for filtering and transforming text)

ให้เราได้ใช้งานโดยไม่ต้องเสียเงินแต่อย่างใด
โปรแกรมนี้ก็จะทำการเหมือน Regular Expression ในการค้นหาคำและจัดการเกี่ยวกับ Text Stream แค่เพียงเรารู้คำสั่งของมันและก็ Regular expression ในการ search หาเท่านั้นแหล่ะ โป้งเดียว ผลลัพท์ได้ทันที
ซึ่งใน senior project ก็ต้องใช้โปรแกรมที่จะมาช่วยในการเช็คคำ ตัดคำ ไอ้ตัวเราก็นั่งเขียน ลองผิดลองถูก อยู่นานมาก

เห็นทีว่า นานอย่างนี้คงไม่เสร็จแน่ ลองไปถาม ผู้เชี่ยวชาญตาม Forum ดีกว่า ก็โพสถามที่ http://ubuntuforums.org/
เพียงแค่คืนเดียวเท่านั้นแหล่ะ มีคนมาตอบแล้ว (ถึงแม้คำถามเรา อ่านแล้วจะงง ก็เหอะ แหะๆ ไม่เก่ง อังกฤษ)
มีคนมาบอกว่า ให้ลองใช้โปรแกรม sed
อ้า เห็นดังนั้นมาลองดูดีกว่า

เริ่มแรก มีผลของ Error ไฟล์นั้งนี้

menushell.c:6: error: ‘::main’ must return ‘int’
menushell.c: In function ‘int main()’:
menushell.c:9: error: expected ‘,’ or ‘;’ before ‘int’
menushell.c:8: warning: unused variable ‘cmd’
menushell.c:23: error: expected `}’ at end of input

สิ่งที่ต้องการก็คือ เพียงแค่ตัวเลข 6, 9,8, 23 (แค่นี้ก่อน)
แค่เพียงเท่านี้แหล่ะ ไอ้เราก็ไปนั่งเขียนโปรแกรมเช็คอยู่นานมั๊กๆ

คราวนี้ลองมาใช้โปรแกรม sed ดู

$ g++ -Wall yourfile.c 2>&1 1>/dev/null | sed –quiet ‘s/(.*:)([0-9][0-9]*)(:.*)/2/p’

ให้ตายสิโรบิ้น ผลลัพท์ที่ได้มันคือ

6
9
8
23

เอ้ย มันออกมาแล้ว ไม่ต้องไปเขียนโปรแกรมเลย ทุ่นแรงไปได้อีก แต่คราวนี้อยากได้ comments ข้างหลังตัวเลขบ้างอ่ะ ก็ใส่ไปว่า

$ g++ -Wall menushell.c 2>&1 1>/dev/null | sed –quiet ‘s/(.*:)([0-9][0-9]*)/2/p’

ผลลัพท์ที่ได้หล่ะ

6: error: ‘::main’ must return ‘int’
9: error: expected ‘,’ or ‘;’ before ‘int’
8: warning: unused variable ‘cmd’
23: error: expected `}’ at end of input

เห็นอย่างนี้พูดได้คำเดียวว่า โอ้ว พระเจ้ายอด มันจอร์ชมาก

ส่วนใครสนใจอีกก็ไปนี่ได้เลย

http://www.grymoire.com/Unix/Sed.html

engineerball Written by: