คำถามติดแท็ก shell-script

คำถามเกี่ยวกับเชลล์สคริปต์ไฟล์เรียกทำงานที่ตีความโดยเชลล์ (bash, zsh ฯลฯ )

1
Multi-Threading / Forking ในสคริปต์ทุบตี
ฉันได้เขียนสคริปต์ทุบตีซึ่งอยู่ในรูปแบบต่อไปนี้: #!/bin/bash start=$(date +%s) inFile="input.txt" outFile="output.csv" rm -f $inFile $outFile while read line do -- Block of Commands done < "$inFile" end=$(date +%s) runtime=$((end-start)) echo "Program has finished execution in $runtime seconds." whileห่วงจะอ่านจากดำเนินกิจกรรมบางอย่างในสายและการถ่ายโอนผลใน$inFile$outFile เนื่องจาก$inFileมีความยาว 3,500+ บรรทัดสคริปต์จะใช้เวลา 6-7 ชั่วโมงในการดำเนินการอย่างสมบูรณ์ เพื่อลดเวลานี้ฉันวางแผนที่จะใช้หลายเธรดหรือฟอร์กในสคริปต์นี้ ถ้าฉันสร้างกระบวนการลูก 8 กระบวนการจะประมวลผล 8 บรรทัด$inFileพร้อมกัน สิ่งนี้สามารถทำได้?

7
นับจำนวนบรรทัดทั้งหมดก่อน / หลังการจับคู่รูปแบบ
ฉันมีรายการที่อยู่ IP จำนวนมากซึ่งไม่ได้เรียงตามลำดับ ฉันต้องการค้นหาจำนวนที่อยู่ IP ที่มีอยู่ก่อน / หลังที่อยู่ IP ที่เฉพาะเจาะจง ฉันจะบรรลุสิ่งนี้ได้อย่างไร

4
วิธีอ่านอินพุตของผู้ใช้จากไปป์?
สมมติว่าฉันมีไฟล์ชื่อที่confirmation.shมีเนื้อหาดังต่อไปนี้: #!/bin/bash echo -n "Are you sure [Y/n]? " read line case "$line" in n|N) echo "smth" ;; y|Y) echo "smth" ;; esac และฉันต้องการเรียกใช้สคริปต์นี้ด้วยวิธีต่อไปนี้: cat confirmation.sh | sh ฉันเห็นAre you sure [Y/n]?และสคริปต์ถูกขัดจังหวะ มีปัญหาอะไร?

4
ตรวจสอบว่า 2 ไดเรกทอรีโฮสต์บนพาร์ติชันเดียวกันบน Linux หรือไม่
ฉันจะตรวจสอบว่า/my/dirอยู่บนพาร์ติชันเดียวกันได้/หรือไม่? นี่สำหรับการรวมภายในสคริปต์ การเชื่อมต่อแบบผูกควรได้รับการจัดการอย่างถูกต้อง ยินดีต้อนรับโซลูชันที่รองรับ POSIX

2
เชื่อมต่อไฟล์วิดีโอแบบโต้ตอบ
วิธีการต่อเชื่อม (เข้าร่วม) ไฟล์วิดีโอ MP4 หลายไฟล์เป็นไฟล์เดียว มีโปรแกรมมากมายที่ทำเช่นนี้สำหรับสองไฟล์จากบรรทัดคำสั่ง ตัวอย่างเช่น ffmpeg avconv mp4box แต่บ่อยครั้งที่เราต้องการวิธีแก้ปัญหาในการทำสิ่งนี้แบบโต้ตอบ

2
“ ประวัติ” หยุดทำงานเมื่อทำงานในสคริปต์ทุบตี
ฉันกำลังเขียนสคริปต์ง่ายๆเพื่อ grep ประวัติทุบตีของฉันเพื่อค้นหาสายเฉพาะ บนบรรทัดคำสั่งฉันสามารถทำสิ่งต่อไปนี้ซึ่งทำงานได้ดี: history | grep git อย่างไรก็ตามเมื่อฉันสร้างสคริปต์ทุบตีด้วยคำสั่งเดียวกับข้างบนก็historyไม่ส่งคืนสิ่งใดเลย: #!/bin/bash history | grep git เมื่อฉันลบบรรทัดแรก#!/bin/bashสคริปต์ของฉันจะทำงานอีกครั้ง เกิดอะไรขึ้นที่นี่ ฉันจะใช้historyภายในสคริปต์ทุบตีได้อย่างไร

5
เปรียบเทียบสองไฟล์กับคอลัมน์แรกและลบแถวที่ซ้ำกันออกจากไฟล์ที่ 2 ในเชลล์สคริปต์
ฉันจะถามคำถามของฉันพร้อมตัวอย่าง ฉันมี 2 ไฟล์: ไฟล์ # 1: 118D FC300_R5_TP FX.B 32775 2112 6 2038 6 2112 0 118E FC300_R5_TP FX.B 32775 2136 7 2065 6 2136 0 118F FC300_R5_TP FX.B 32775 2124 6 2064 6 2124 0 1190 FC300_R5_TP FX.B 819210 814632 99 814609 99 814632 0 1191 FC300_R5_TP FX.B …

5
การรวมสองไฟล์ด้วยตัวระบุเฉพาะ
ฉันมีสองไฟล์ที่มีรายการประมาณ 12900 และ 4400 ตามลำดับที่ฉันต้องการเข้าร่วม ไฟล์ดังกล่าวมีข้อมูลตำแหน่งสำหรับสถานีสำรวจสภาพอากาศที่มีที่ดินเป็นฐานทั่วโลก ไฟล์ที่ใหญ่ที่สุดจะได้รับการอัพเดตทุกสองสัปดาห์และมีขนาดเล็กลงปีละครั้งหรือมากกว่านั้น สามารถดูไฟล์ต้นฉบับได้ที่นี่ ( http://www.wmo.int/pages/prog/www/ois/volume-a/vola-home.htmและ http://weather.rap.ucar.edu/surface/ สถานี . txt ) ไฟล์ที่ฉันมีอยู่แล้วถูกจัดการโดยฉันด้วย awk, sed, และ bash script บางตัว ฉันใช้ไฟล์เพื่อให้เห็นภาพข้อมูลโดยใช้แพ็คเกจ GEMPAK ซึ่งสามารถใช้งานได้อย่างอิสระจาก Unidata ไฟล์ที่ใหญ่ที่สุดจะทำงานกับ GEMPAK แต่จะไม่สามารถทำงานได้อย่างเต็มประสิทธิภาพ สำหรับการเข้าร่วมนี้เป็นสิ่งจำเป็น ไฟล์ 1 มีข้อมูลตำแหน่งสำหรับสถานีตรวจสอบสภาพอากาศโดยที่ตัวเลข 6 ตัวแรกคือตัวระบุสถานีที่ไม่ซ้ำกัน พารามิเตอร์ที่แตกต่างกัน (หมายเลขสถานีชื่อสถานีรหัสประเทศละติจูดลองจิจูดและระดับความสูงของสถานี) จะถูกกำหนดโดยตำแหน่งในบรรทัดเท่านั้นนั่นคือไม่มีแท็บ 060090 AKRABERG FYR DN 6138 -666 101 060100 VAGA FLOGHAVN DN 6205 …


3
การแก้ไขไฟล์ปรับแต่งด้วยสคริปต์ทุบตี
ฉันพยายามเขียนสคริปต์ทุบตีง่ายๆที่ฉันจะใช้ในการติดตั้งแอปพลิเคชันและอัปเดตเป็นไฟล์ปรับแต่ง ฉันมีเวลายากที่จะได้รับมันเป็นไฟล์ปรับเปลี่ยน # DBHost=localhost DBName=test # DBPassword= ข้อเสนอแนะใด ๆ ที่ฉันจะได้รับการแก้ไขดังกล่าวข้างต้น? DBHost=localhost DBName=database DBPassword=password

4
จะลบสตริงจากไฟล์ผ่านเชลล์สคริปต์ได้อย่างไร?
.bash_profileฉันพยายามที่จะลบสตริงจาก เพิ่มสตริงเมื่อสคริปต์เชลล์ของฉันทำงาน: สตริงของฉันที่ bash_profile ดังนี้: # for Myapllication export MYAPP_HOME=/opt/myapp ฉันต้องการที่จะลบสตริงจาก.bash_profileเมื่อ myapp rpmจะถูกลบออกผ่านทาง จะลบสตริงจากไฟล์ผ่านเชลล์สคริปต์ได้อย่างไร (หรือวิธีอื่นที่เป็นไปได้)

2
ค้นหาไฟล์ทั้งหมดด้วย Python Shebang
ฉันพยายามเรียกใช้การตรวจสอบ PEP8 เทียบกับแผนภูมิต้นไม้ขนาดใหญ่ แผนผังประกอบด้วยไฟล์ต่าง ๆ ในภาษาต่างๆ แนวคิดคือการตรวจสอบสคริปต์ Python ทั้งหมดโดยไม่ต้องแสดงรายการอย่างชัดเจน ไฟล์เหล่านี้ส่วนใหญ่ไม่มี.pyนามสกุล มีวิธีง่าย ๆ ในการค้นหาไฟล์ทั้งหมดที่มีคำว่า Python ใน shebang หรือค้นหาไฟล์ทั้งหมดที่จะรันด้วย Python เมื่อดำเนินการหรือไม่?

3
case + วิธีใช้งานเท่ากันหรือน้อยกว่าหรือน้อยกว่า
เป้าหมายของฉันคือการตรวจสอบช่วงของตัวเลขด้วย (เฉพาะกับcase+ esac) และพิมพ์ช่วง ตัวอย่างเช่น: หากตัวเลขอยู่ระหว่าง 0 ถึง 80 ให้พิมพ์ >=0<=80 หากตัวเลขอยู่ระหว่าง 81 ถึง 100 ให้พิมพ์ >=81<=100 เป็นต้น ปัญหาเกี่ยวกับสคริปต์ของฉันด้านล่างพิมพ์เฉพาะใน>=0<=90กรณีที่หมายเลขระหว่าง 0 ถึง 9 วิธีการแก้ไขสคริปต์ของฉันเพื่อที่จะพิมพ์ผลลัพธ์ที่ถูกต้องตามช่วงหมายเลข? #!/bin/ksh read number case $number in [0-80]) echo ">=0<=80";; [81-100]) echo ">=81<=100";; [101-120]) echo ">=101<=120";; [121-300]) echo ">=121<=300";; esac

4
วิธีการลบช่องว่างต่อท้ายท้ายบรรทัดในไฟล์ที่กำหนด (มากกว่าหนึ่ง)?
ฉันเลยเบื่อกับช่องว่างที่ไร้ประโยชน์ในไฟล์ต้นฉบับที่ฉันได้กำหนดค่าเป็นกลุ่มเพื่อแสดงให้พวกเขา ปัญหาคือว่าฉันบ่อยมาก (ถ้าไม่เสมอ) ต้องจัดการกับช่องว่างที่ไร้ประโยชน์กับผู้พัฒนาเพื่อนของฉัน ฉันแค่ต้องการสแกนไฟล์ต้นฉบับ (รับนิพจน์ปกติ) และลบช่องว่างออกจากไฟล์ที่กำหนดทั้งหมด ฉันค้นหาในเว็บ ("ทุบตีลบช่องว่าง" ฯลฯ ) แต่ไม่พบสิ่งที่มีประโยชน์

6
เครื่องมือในการสร้างไฟล์ข้อความจากแม่แบบ
ฉันต้องสร้างไฟล์ข้อความมากกว่า 100+ ชุดจากเทมเพลต ฉันใช้เชลล์สคริปต์ที่ซับซ้อนเกินไป ฉันคิดว่ามีวิธีที่ชาญฉลาดในการจัดการสิ่งนี้ แต่ฉันไม่รู้ว่าจะทำอย่างไร ฉันมี "ฐานข้อมูล": # outputfile template data1 data2 data3 first.txt $template_main $text1 abcd 1234 second.txt $template_main $text2 efgh 5678 third.txt $template_other $text1 ij 90 และไฟล์กำหนดค่า: template_main=main.txt template_other=other.txt text1=whatever text2=blah เทมเพลตคือไฟล์ข้อความที่มีตัวยึดตำแหน่งเช่น %% data2 %% (แบบฟอร์มตัวยึดสามารถเปลี่ยนแปลงได้) มีคนรู้จักเครื่องมือในการทำให้สิ่งนี้ดีกว่าด้วยเชลล์สคริปต์ที่ซับซ้อนหรือไม่?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.