คำถามติดแท็ก text-formatting

คำถามเกี่ยวกับการใช้ยูทิลิตี้บรรทัดคำสั่งเช่น awk, sed, perl, pr ฯลฯ เพื่อจัดรูปแบบไฟล์ข้อความ สำหรับสตริงรูปแบบ printf ให้ใช้แท็ก [printf] สำหรับสตริงรูปแบบวันที่ [วันที่] โปรดดูที่แท็ก [การประมวลผลข้อความ]

3
วัตถุประสงค์ของรูปแบบไฟล์“ ASCII พร้อมรูปแบบโอเวอร์”
หลังจากดาวน์โหลดซอร์สโค้ดสำหรับ Bash ฉันกำลังค้นหาdocไดเรกทอรีและพบไฟล์ต่อไปนี้: bash.1เป็นปกติtroffไฟล์ที่ใช้ในการสร้างหน้าคน bash.0เป็นเหมือนเวอร์ชันข้อความธรรมดาของ man page - เฉพาะที่มันมี^Hอักขระควบคุม backspaceกระจายอย่างอิสระไปทั่วมัน อักขระควบคุมเหล่านี้จะไม่แสดงในการเป็นตัวแทนจาก Git เว็บอินเตอร์เฟส แต่ไฟล์จริงสามารถดาวน์โหลดและตรวจสอบในโปรแกรมแก้ไขข้อความเช่น Vim การรันfileคำสั่งบนbash.0พิมพ์เอาต์พุตต่อไปนี้: bash.0: ASCII text, with overstriking ฉันไม่เคยเจอรูปแบบไฟล์นี้มาก่อนและสงสัยว่าจุดประสงค์ของมันคืออะไรและใช้อย่างไร การค้นหาเว็บสำหรับวลี“ ข้อความ ASCII ที่มีการใช้งานเกินเวลา”ไม่ได้ให้ความกระจ่างมากนัก

1
วิธีการพิมพ์ json โดยใช้ jq standalone
ปัจจุบันเมื่อฉันต้องการพิมพ์ไฟล์ json โดยใช้jqฉันจะใช้: cat file.json | grep jq . แต่ฉันคาดว่าjqจะยอมรับชื่อไฟล์เป็นอาร์กิวเมนต์โดยไม่ต้องย้อนcatกลับ หน้าคนพูดว่า: jq [options ... ] ตัวกรอง [ไฟล์ ... ] ... โดยค่าเริ่มต้น jq อ่านกระแสของวัตถุ JSON (คั่นช่องว่าง) จาก stdin อาจระบุหนึ่งไฟล์ขึ้นไปซึ่งในกรณีนี้ jq จะอ่านอินพุตจากไฟล์เหล่านั้นแทน ยังทำงานอยู่: jq file.json ล้มเหลวโดยการทิ้งข้อผิดพลาดการคอมไพล์ที่ไม่ได้กำหนดคีย์ ฉันควรจะเพิ่มไฟล์เมื่อทำงานjqอย่างไร

5
ฉันจะเพิ่มบรรทัดใหม่ระหว่างบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร
บันทึกเมลอ่านยากอย่างไม่น่าเชื่อ ฉันจะส่งออกบรรทัดว่างระหว่างแต่ละบรรทัดที่พิมพ์บนบรรทัดคำสั่งได้อย่างไร ตัวอย่างเช่นฉันกำลังพิมพ์บันทึก ด้วยวิธีนี้หลายบรรทัดที่พันกันจะไม่สับสน

4
การจัดตำแหน่งสคริปต์ Bash shell
สคริปต์ของฉัน: date echo -e "${YELLOW}Network check${NC}\n\n" while read hostname do ping -c 1 "$hostname" > /dev/null 2>&1 && echo -e "Network $hostname : ${GREEN}Online${NC}" || echo -e "${GRAY}Network $hostname${NC} : ${RED}Offline${NC}" done < list.txt sleep 30 clear done กำลังแสดงผลข้อมูลเช่นนี้: Network 10.x.xx.xxx : Online Network 10.x.xx.xxx : Offline Network 10.x.xx.xxx : …


3
จัดรูปแบบเอาต์พุตของ cputime สำหรับ ps
ฉันพยายามเขียนสคริปต์ที่สามารถตรวจสอบการใช้งาน CPU ของกระบวนการในช่วงเวลาหนึ่ง (เพื่อสร้างกราฟ) จนถึงตอนนี้เป็นคำสั่งที่ฉันใช้ ps -p $PROCID -o cputime,etimes ข้อกังวลเดียวของฉันคือผลลัพธ์ของ cputime ดูเหมือนจะเป็น[dd]hh:mm(หรือสิ่งที่คล้ายกันไม่สามารถจำด้านบนของหัวของฉันตอนนี้) มีวิธีการจัดรูปแบบ cputime ในไม่กี่วินาทีเช่น etime -> etimes เพื่อให้ได้เวลาที่ผ่านไปในไม่กี่วินาที? แก้ไข: นี่คือผลลัพธ์ที่ฉันได้รับในขณะนี้ 2-03:01:33 2653793 ฉันต้องการพารามิเตอร์แรกที่จัดรูปแบบเป็นวินาทีไม่ใช่วันชั่วโมง: นาที: วินาที

2
ลบทุกบรรทัดที่ไม่มีอักขระ n ก่อนตัวคั่น
ฉันมีไฟล์ข้อความที่ยาวมาก (จากที่นี่ ) ซึ่งควรมีอักขระฐานสิบหก 6 ตัวและ 'ตัวแบ่ง' (ซึ่งปรากฏเป็นอักขระตัวเดียวและดูเหมือนจะไม่แสดงอย่างถูกต้องในการทำเครื่องหมายรหัสด้านล่าง) ตามด้วยคำสองสามคำ: 00107B Cisco Systems, Inc 00906D Cisco Systems, Inc 0090BF Cisco Systems, Inc 5080 Cisco Systems, Inc 0E+00 ASUSTek COMPUTER INC. 000C6E ASUSTek COMPUTER INC. 001BFC ASUSTek COMPUTER INC. 001E8C ASUSTek COMPUTER INC. 0015F2 ASUSTek COMPUTER INC. 2354 ASUSTek COMPUTER INC. 001FC6 …

4
พิมพ์หน้าคนที่มีความกว้างคงที่
ด้วยคำสั่งตัวอย่าง man apropos > outputfile ไฟล์ข้อความจะถูกสร้างขึ้นซึ่งมีหน้าที่จัดรูปแบบmanของapropos(มีความแตกต่างเล็กน้อยเกี่ยวกับการman aproposพิมพ์โดยตรงบนหน้าจอเช่นตัวหนา) แต่ฉันต้องการตั้งค่าความกว้างบรรทัดสูงสุดของไฟล์เอาต์พุตที่สร้างขึ้นด้วยตนเองเพื่อให้ย่อหน้าทั้งหมดจะถูกปรับความกว้างนั้น manหน้าถูกสร้างขึ้นผ่านgroff: ตัวอย่างเช่นฉันพยายามวางไว้.ll 50ก่อนหน้าย่อหน้าของไฟล์ต้นฉบับดั้งเดิม.gz manแต่มันก็เล็กน้อยถ้าฉันต้องทำงานกับหลาย ๆmanหน้า ยิ่งไปกว่านั้นตัวละครทุกตัวไม่ได้รับการยอมรับ: apropos.1:45: warning: can't find character with input code 195 apropos.1:45: warning: can't find character with input code 168 apropos.1:47: warning: can't find character with input code 178 apropos.1:131: warning: can't find character with input code 169 …

1
การจัดรูปแบบข้อความเป็นคอลัมน์
ฉันมีไฟล์ที่มีสองคอลัมน์ดังแสดงด้านล่าง (ตัวอย่าง): ไฟล์ 1: John 1 Peter 2 Michael Rod 3 Su 7 Louise 9 ฉันต้องการจัดรูปแบบนี้และผลลัพธ์ที่คาดหวังของฉันควรเป็น: ไฟล์ 1: John 1 Peter 2 Michael Rod 3 Su 7 Louise 9

4
ปรับเปลี่ยนความกว้างของคอลัมน์แรกในไฟล์ด้วยจำนวนตัวแปรที่หลากหลายโดยใช้ awk
ฉันเข้าใจวิธีใช้ฟังก์ชั่น printf ของ awk แต่ฉันไม่ต้องการระบุทุกฟิลด์ ตัวอย่างเช่นสมมติว่านี่เป็นไฟล์ของฉัน: c1|c2|c3|c4|c5 c6|c7|c8|c9|c10 c11|c12|c13|c14|c15 ฉันต้องการจัดรูปแบบเพื่อให้ทุกเขตข้อมูลแรกของระเบียนคือความกว้างของ c11 - เซลล์ที่ยาวที่สุดในเขตข้อมูลแรก: c1 |c2|c3|c4|c5 c6 |c7|c8|c9|c10 c11|c12|c13|c14|c15 ฉันเข้าใจว่าฉันสามารถระบุ: awk -F"|" '{printf "%-3s%s%s%s%s\n", $1, $2, $3, $4, $5}' file > newfile สมมติว่าฉันรู้ว่าฉันต้องการให้ความกว้างของคอลัมน์แรกเป็นอย่างไร แต่ฉันไม่ทราบว่ามีกี่ฟิลด์ในไฟล์ โดยทั่วไปฉันต้องการทำสิ่งที่ชอบ: ... '{printf "%-3s|", $1}' ... จากนั้นพิมพ์ส่วนที่เหลือของฟิลด์ในรูปแบบดั้งเดิม

5
แทนที่ขีดล่างด้วยเครื่องหมายจุลภาคและลบเครื่องหมายคำพูดคู่ใน CSV
ฉันมีไฟล์ CSV เป็น input.csv "1_1_0_0_76" "1_1_0_0_77" "1_1_0_0_78" "1_1_0_0_79" "1_1_0_0_80" "1_1_0_0_81" "1_1_0_0_82" "1_1_0_0_83" "1_1_0_0_84" "1_1_0_0_85" ............. เป็นต้น ฉันต้องการแปลงไฟล์ CSV นี้เป็น result.csv 1,1,0,0,76 1,1,0,0,77 1,1,0,0,78 1,1,0,0,79 1,1,0,0,80 1,1,0,0,81 1,1,0,0,82 1,1,0,0,83 1,1,0,0,84 1,1,0,0,85
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.