วิธีแทนที่ Newline ด้วยเครื่องหมายจุลภาคโดยใช้คำสั่ง `sed'

How Replace Newline With Comma Using Sed Command



อักขระหรือสตริงใดๆ สามารถแทนที่ได้โดยใช้คำสั่ง `sed' บางครั้ง เราจำเป็นต้องแทนที่อักขระขึ้นบรรทัดใหม่ ( ) ในไฟล์ด้วยเครื่องหมายจุลภาค ในบทความนี้ เราใช้คำสั่ง `sed` เพื่อแทนที่ ด้วยเครื่องหมายจุลภาค

การใช้ `sed` เพื่อแทนที่ ด้วยเครื่องหมายจุลภาค

ปัญหามากมายอาจเกิดขึ้นได้เมื่อแทนที่ ด้วยเครื่องหมายจุลภาค โดยค่าเริ่มต้น ทุกบรรทัดจะลงท้ายด้วย เมื่อสร้างไฟล์ คำสั่ง `sed` สามารถแยกบน และแทนที่บรรทัดใหม่ด้วยอักขระใดก็ได้ สามารถใช้ตัวคั่นอื่นแทน ได้ แต่เมื่อใช้ GNU sed เท่านั้น เมื่อ หายไปในบรรทัดสุดท้ายของไฟล์ GNU sed สามารถหลีกเลี่ยงการพิมพ์ นอกจากนี้ โดยปกติแล้ว จะถูกเพิ่มในแต่ละเอาต์พุตที่ต่อเนื่องกันของ `sed'







สร้างไฟล์

ในบทความนี้ เราจะแสดงวิธีใช้คำสั่ง `sed' เพื่อแทนที่ ด้วยเครื่องหมายจุลภาค หากต้องการทำตามบทช่วยสอนนี้ ให้สร้างไฟล์ข้อความชื่อ Clients.txt ด้วยข้อมูลลูกค้าแบบตารางต่อไปนี้



NS ชื่อ อีเมล โทรศัพท์
c01 นพ. รากิบ [ป้องกันอีเมล] 01856233238
c02 Meher Afroze [ป้องกันอีเมล] 01733536342
c03 ฟากรูล อาซาน [ป้องกันอีเมล] 01934737248
c04 เฮลัล อุดดิน [ป้องกันอีเมล] 01534895898
c05 นุสรัต จาหาน [ป้องกันอีเมล] 01866345254

ตัวอย่างที่ 1: แทนที่ ด้วยเครื่องหมายจุลภาคโดยใช้ -z

ตัวเลือก -z ใช้เพื่อแปลง เป็นอักขระ null () เนื้อหาของไฟล์จะถือเป็นบรรทัดเดียวหากไม่มีอักขระที่เป็นค่าว่าง คำสั่ง `sed` จะแปลงการขึ้นบรรทัดใหม่เป็นอักขระ null และแทนที่แต่ละ ด้วยเครื่องหมายจุลภาคโดยใช้รูปแบบการค้นหาและแทนที่ครั้งแรก ที่นี่ ใช้ 'g' เพื่อค้นหา ทั่วโลก ด้วยรูปแบบการค้นหาและแทนที่ครั้งที่สอง เครื่องหมายจุลภาคสุดท้ายจะถูกแทนที่ด้วย



$แมวClients.txt

$sed -กับ 's/ /,/g;s/,$/ /'Clients.txt

ผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้นหลังจากรันคำสั่ง





ตัวอย่างที่ 2: แทนที่ ด้วยเครื่องหมายจุลภาคโดยใช้ a, b, $! และ นู๋

คำสั่ง `sed` สามารถใช้แทนที่ ด้วยเครื่องหมายจุลภาคได้โดยใช้ a, b, N และ $! . ที่นี่, ถึง ใช้สำหรับผนวกงาน NS ใช้เพื่อแยกเนื้อหา NS ใช้เพื่อไปยังบรรทัดถัดไป และ $! ใช้เพื่อป้องกันไม่ให้งานการแทนที่ถูกนำไปใช้กับบรรทัดสุดท้าย คำสั่งจะแทนที่แต่ละ NS ด้วยเครื่องหมายจุลภาคยกเว้นบรรทัดสุดท้าย



$แมวClients.txt

$sed ':a;N;$!ba;s/ /,/g'Clients.txt

ผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้นหลังจากรันคำสั่ง

ตัวอย่างที่ 3: แทนที่ ด้วยเครื่องหมายจุลภาคโดยใช้ H, h, d, x และ y

หากคุณต้องการเปลี่ยน NS) ด้วยเครื่องหมายจุลภาคในไฟล์ขนาดเล็ก คุณสามารถใช้คำสั่ง `sed` ต่อไปนี้ได้ ที่นี่, ชม ใช้สำหรับต่อท้ายบรรทัดสุดท้ายกับข้อความค้าง 1h ใช้เพื่อคัดลอกทุกบรรทัดของไฟล์ไปยังข้อความพักจากบรรทัดแรก $!d ใช้สำหรับลบทุกบรรทัด ยกเว้นบรรทัดสุดท้าย NS ใช้เพื่อแลกเปลี่ยนพื้นที่ข้อความและรูปแบบและ และ ใช้แทนกัน NS ในข้อความที่มีเครื่องหมายจุลภาค

$แมวClients.txt

$sed 'H;1h;$!d;x;y/ /,/'Clients.txt

ผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้นหลังจากรันคำสั่ง

ตัวอย่างที่ 4: แทนที่ ด้วยเครื่องหมายจุลภาคโดยใช้ -n ,H, h, g และ p

คำสั่ง `sed` สามารถใช้แทนได้ NS ด้วยเครื่องหมายจุลภาค with -NS ตัวเลือกซึ่งป้องกันการพิมพ์อัตโนมัติ เช่นเดียวกับในตัวอย่างก่อนหน้านี้ ชม ใช้ที่นี่เพื่อต่อท้ายบรรทัดสุดท้ายกับข้อความที่ถือไว้ 1 ชม ใช้เพื่อคัดลอกทุกบรรทัดของไฟล์ไปยังข้อความที่ถือไว้ $ หมายถึงบรรทัดสุดท้ายของไฟล์ NS ใช้ในการคัดลอกจากข้อความถือและ NS ใช้ในการพิมพ์

$แมวClients.txt

$sed-NS'H;1h; ${g; s /NS///g;p}'Clients.txt

ผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้นหลังจากรันคำสั่งข้างต้น

ตัวอย่างที่ 5: แทนที่ ด้วยเครื่องหมายจุลภาคโดยใช้ H, x, p

H, x และ p ได้อธิบายไว้ในตัวอย่างก่อนหน้านี้ นิพจน์การค้นหาและแทนที่แรกจะแทนที่แต่ละ NS ด้วยเครื่องหมายจุลภาค และนิพจน์การค้นหาและแทนที่ที่สองจะแทนที่เครื่องหมายจุลภาคที่จุดเริ่มต้นของบรรทัดด้วยช่องว่าง

$แมวClients.txt

$sed-NS'H;${x;s/ /,/g;s/^,//;p;}'Clients.txt

ผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้นหลังจากรันคำสั่งข้างต้น

ตัวอย่างที่ 6: แทนที่ ด้วยเครื่องหมายจุลภาคโดยใช้ N และ `cat`

คำสั่ง `cat` ใช้ที่นี่เพื่อส่งเนื้อหาของไฟล์ไปยังคำสั่ง `sed` และ NS ใช้เพื่อเลื่อนไปยังบรรทัดถัดไป

$แมวClients.txt

$แมวClients.txt| sed 'ไม่/ /,/'

ผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้นหลังจากรันคำสั่งข้างต้น

บทสรุป

อาจจำเป็นต้องแทนที่ ด้วยเครื่องหมายจุลภาคเพื่อถ่ายโอนข้อมูลจากรูปแบบไฟล์หนึ่งไปยังอีกรูปแบบหนึ่ง การแทนที่ประเภทนี้สามารถทำได้โดยใช้คำสั่ง Linux อื่นๆ ตัวเลือกคำสั่งต่างๆ เช่น H, N, h และ x สามารถใช้กับคำสั่ง `sed` เพื่อทำภารกิจนี้ได้ บทแนะนำนี้มีหลายวิธีในการใช้คำสั่ง `sed` เพื่อแทนที่ ด้วยเครื่องหมายจุลภาค