ใน CentOS เวลาดูสคริปของคนอื่นจะเห็นคำว่า grep tr cut ซึ่งเข้าใจยาก เลยเขียนสรุปไว้กันลืม
ดาวโหลด
bash for windows ที่นี่
unzip แล้วคลิกไฟล์ bash.exe ได้เลย
คำสั่งตัวอย่าง
db=$(grep db_collation backup/palthai_db.conf | tr '&' '\n ' |grep SCHEMA_NAME |cut -d "=" -f 2)
grep db_collation backup/palthai_db.conf
ให้หาคำว่า db_collation ในไฟล์ backup/palthai_db.conf
accesshosts=0=localhost
db_collation=CATALOG_NAME=def&COLLATION_NAME=&SCHEMA_NAME=palthai_db&SQL_PATH=
ผลลัพธ์ที่ได้คือ
db_collation=CATALOG_NAME=def&COLLATION_NAME=&SCHEMA_NAME=palthai_db&SQL_PATH=
| tr '&' '\n '
นำผลลัพธ์ที่ได้ไปประมวลผลต่อ โดยเปลี่ยน & ให้เป็นตัวขึ้นบรรทัดใหม่ '\n'
| grep SCHEMA_NAME
นำไปค้นหาคำว่า SCHEMA_NAME จะได้ผลลัพธ์เป็น
SCHEMA_NAME=palthai_db
| cut -d "=" -f 2
แบ่งด้วย = แล้วเลือกตัวที่ 2 จึงได้ผลลัพธ์เป็น palthai_db
ศึกษาเพิ่มเติมที่นี่
https://dandreamsofcoding.com/2016/01/15/linux-commands-cut-and-tr/
สรุป
grep text1 file1 = ให้หาคำว่า text1 ในไฟล์ file1
| tr '&' '\n ' = นำผลลัพธ์ที่ได้ไปประมวลผลต่อ โดยเปลี่ยน & ให้เป็น '\n'
| grep text2 = นำไปค้นหาคำว่า text2
| cut -d "=" -f 2 = แบ่งด้วย = แล้วเลือกตัวที่ 2
cut -d ' ' -f5,9 = แบ่งด้วย ' ' แล้วเลือกตัวที่ 5,9
cut -d ' ' -f1,3-5,9 = แบ่งด้วย ' ' แล้วเลือกตัวที่ 1,3,4,5,9
| tr -s ' ' = ลดช่องว่าง เช่น aaa 00 000 ได้ผลเป็น aaa 00 000
| tr -d [ = ลบตัวอักษร [
| tr -d / = ลบตัวอักษร / เช่น 14/Jan/2016 เป็น 14Jan2016
| tr -t a-z A-Z = แก้ตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่
| tr -t \\n , = เปลี่ยนตัวขึ้นบรรทัดใหม่ \n ให้เป็น ,
head -10 log.txt = เลือก 10 บรรทัดแรกของไฟล์
${db#*_} = ตัดด้านหน้า _ ออก เช่น palthai_db เป็น db
${db%_*} = ตัดด้านหลัง _ ออก เช่น palthai_db เป็น palthai
อ่านเพิ่มเติม
https://www.thegeekstuff.com/2010/07/bash-string-manipulation/1 ส.ค. 62