คำถามติดแท็ก whitespace

การรวมกันของช่องว่างแท็บหรือบรรทัดใหม่ซึ่งสร้างช่องว่าง "ว่าง" ในบรรทัดหรือคอลัมน์

5
ทำไมเชลล์สคริปต์ของฉันถึงสำลักในช่องว่างหรืออักขระพิเศษอื่น ๆ
หรือคู่มือแนะนำการจัดการชื่อไฟล์ที่มีประสิทธิภาพและการส่งผ่านสตริงอื่น ๆ ในเชลล์สคริปต์ ฉันเขียนเชลล์สคริปต์ซึ่งทำงานได้ดีเกือบตลอดเวลา แต่มันฉายาบางอินพุต (เช่นชื่อไฟล์บางชื่อ) ฉันพบปัญหาเช่นต่อไปนี้: ฉันมีชื่อไฟล์ที่มีพื้นที่hello worldและมันก็ถือว่าเป็นสองไฟล์แยกต่างหากและhelloworld ฉันมีสายอินพุตพร้อมช่องว่างสองช่องติดต่อกัน ช่องว่างนำหน้าและต่อท้ายหายไปจากบรรทัดอินพุต บางครั้งเมื่ออินพุตมีอักขระหนึ่งตัวอักขระ\[*?เหล่านั้นจะถูกแทนที่ด้วยข้อความบางส่วนซึ่งเป็นชื่อไฟล์จริง มีเครื่องหมายอะโพสโทรฟี'(หรือเครื่องหมายคำพูดคู่") ในอินพุตและสิ่งต่าง ๆ แปลกประหลาดหลังจากจุดนั้น มีแบ็กสแลชในอินพุต (หรือ: ฉันใช้ Cygwin และชื่อไฟล์บางส่วนของฉันมี\ตัวคั่นสไตล์ Windows ) เกิดอะไรขึ้นและฉันจะแก้ไขได้อย่างไร

10
ฉันจะตัดช่องว่างนำหน้าและต่อท้ายจากแต่ละบรรทัดของเอาต์พุตบางรายการได้อย่างไร
ฉันต้องการลบช่องว่างและแท็บนำหน้าและส่วนท้ายทั้งหมดออกจากแต่ละบรรทัดในเอาต์พุต มีเครื่องมือง่ายๆอย่างที่trimฉันสามารถเอาท์พุทของฉันเป็น? ไฟล์ตัวอย่าง: test space at back test space at front TAB at end TAB at front sequence of some space in the middle some empty lines with differing TABS and spaces: test space at both ends

3
ทำไม Vim เยื้องรหัสวางอย่างไม่ถูกต้อง?
ในกลุ่มถ้าฉันวางสคริปต์นี้: #!/bin/sh VAR=1 while ((VAR < 10)) do echo "VAR1 is now $VAR" ((VAR = VAR +2)) done echo "finish" ฉันได้รับผลลัพธ์แปลก ๆ เหล่านี้: #!/bin/sh #VAR=1 #while ((VAR < 10)) # do # echo "VAR1 is now $VAR" # ((VAR = VAR +2)) # done # echo "finish" # สัญญาณแฮช (#) …

1
ทำไมทุบตีไม่เก็บคำสั่งที่ขึ้นต้นด้วยช่องว่าง
ถ้าฉันทำลำดับของคำสั่งเช่น: $ ls $ grep abc file.txt จากนั้นใช้ปุ่มลูกศรขึ้นเพื่อรับค่าก่อนหน้าเทอร์มินัลจะแสดง cmd ล่าสุด (ซึ่งอยู่ที่grepนี่) แต่ถ้าฉันทำอะไรแบบนี้: $ ls $ grep abc file.txt ที่grepจะนำหน้าด้วยช่องว่างกดขึ้นจะช่วยให้ไม่ได้lsgrep ทำไมนี้

1
ไม่สนใจช่องว่างการเปลี่ยนแปลงในคำสั่ง git ทั้งหมด
ฉันพบไซต์มากมายที่อธิบายวิธีการคอมไพล์เตือนคุณเมื่อคุณเปลี่ยนจุดสิ้นสุดบรรทัดหรือเทคนิคอื่น ๆ เพื่อป้องกันไม่ให้คุณทำไฟล์ทั้งหมดยุ่งเหยิง สมมติว่ามันสายไปแล้ว - ทรีได้ยอมรับว่าสลับปลายสายของไฟล์ดังนั้นgit diffแสดงการลบไฟล์เก่าแล้วตามด้วยการเพิ่มไฟล์ใหม่ที่มีเนื้อหาเดียวกัน ฉันกำลังมองหาตัวเลือกการกำหนดค่า git หรือการตั้งค่าสถานะบรรทัดคำสั่งที่บอกว่าdiffไม่สนใจสิ่งเหล่านั้น - ถ้าสองบรรทัดแตกต่างกันโดยช่องว่างเท่านั้นให้ทำท่าว่ามันเหมือนกัน ฉันต้องการตัวเลือกการตั้งค่า / การตั้งค่าสถานะนี้เพื่อทำงานกับทุกอย่างที่ขึ้นอยู่กับความแตกต่างของไฟล์ - diff,, / blameแม้merge/ ในrebaseอุดมคติ - ฉันต้องการgitละเว้นช่องว่างต่อท้ายอย่างสมบูรณ์โดยเฉพาะอย่างยิ่งการสิ้นสุดบรรทัด ฉันจะทำสิ่งนั้นได้อย่างไร

2
กำลังลบช่องว่างแท็บบรรทัดใหม่ ฯลฯ ออกจากตัวแปรหรือไม่
นี่เป็นข้อผิดพลาดที่ฉันได้รับและมันล้มเหลวเนื่องจากตัวแปรที่มีค่าควรจะเป็น 2 (ฉันได้รับสิ่งนี้โดยใช้กselect * from tabel) ฉันได้รับช่องว่างในตัวแปรนั้น + 0 != 2 ./setjobs[19]: 0: not found. ฉันจะลบช่องว่างเหล่านั้นทั้งหมดหรือขึ้นบรรทัดใหม่ออกจากตัวแปรนั้นได้อย่างไร Can tr, sedหรืออะไรความช่วยเหลือ? นี่คือสิ่งที่ฉันทำ: set_jobs_count=$(echo "set heading off; select count(*) from oppar_db where ( oppar_db_job_name, oppar_db_job_rec ) in ($var) ;" | \ sqlplus -s ${OP_ORA_USER}/${OP_ORA_PASS}@$OPERATIONAL_DB_NAME) ใช้งานได้ตามที่แนะนำ: | sed 's/[[:space:]]//g' แต่ฉันยังคงได้รับค่าเช่น: set_jobs_count= 2
25 shell  sed  tr  whitespace  newlines 

3
วิธีการแถบช่องว่างต่อท้ายโดยอัตโนมัติบันทึกใน Vi และ Vim?
มีการ.vimrcตั้งค่าให้ลบช่องว่างต่อท้ายโดยอัตโนมัติเมื่อบันทึกไฟล์หรือไม่ เป็นการดี (เพื่อความปลอดภัย) ฉันต้องการมีฟังก์ชั่นนี้สำหรับไฟล์บางไฟล์เท่านั้นเช่น *.rb
22 vim  vi  editors  vimrc  whitespace 

3
เครื่องหมายวงเล็บในเงื่อนไข if: เหตุใดฉันจึงได้รับข้อผิดพลาดทางไวยากรณ์โดยไม่มีช่องว่าง
ฉันใช้สคริปต์ด้านล่างเพื่อย้ายสองวันกลับเมื่อสคริปต์ทำงานที่เริ่มต้นสองวันของปีและตรวจสอบวันแรกและวันที่สองของทุกเดือนและย้ายกลับสองวัน if [$month="01"] && [$day="01"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [$month="01"] && [$day="02"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [ $day = "01" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else if [ $day = "02" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else date="$month/$yes_day/$year" fulldate="$year$month$yes_day" fi fi fi fi แต่ฉันไม่ดีได้รับข้อความแสดงข้อผิดพลาดด้านล่าง Etime_script.sh: line 19: [06=01]: command not …

2
วิธีที่สอดคล้องกับ POSIX ในการทำงานกับรายการชื่อไฟล์ที่อาจมีช่องว่าง
ฉันได้เห็นคำแนะนำในการเขียนสคริปต์ของ Bash แนะนำให้ใช้อาร์เรย์สำหรับทำงานกับชื่อไฟล์ที่มีช่องว่าง แต่DashAsBinShชี้ให้เห็นว่าอาร์เรย์ไม่สามารถเคลื่อนย้ายได้ดังนั้นฉันกำลังมองหาวิธีการทำงานร่วมกับ POSIX ในการทำงานกับรายการชื่อไฟล์ที่อาจมีช่องว่าง ฉันต้องการแก้ไขสคริปต์ตัวอย่างด้านล่างเพื่อที่จะได้ echo foo/target/a.jar foo/target/b.jar bar/target/lol whitespace.jar นี่คือสคริปต์ #!/usr/bin/env sh INPUT="foo/target/a.jar foo/target/b.jar bar/target/b.jar bar/target/lol whitespace.jar" # this would be produced by a 'ls' command # We can execute the ls within the script, if it helps dostuffwith() { echo $1; }; F_LOCATIONS=$INPUT ALL_FILES=$(for f in …


3
การจับคู่คำที่มี / ไม่มีช่องว่างต่อท้ายแตกต่างกันอย่างไร
ฉันกำลังเรียนรู้การเขียนสคริปต์เชลล์และฉันใช้ HackerRank อยู่ มีคำถามที่เกี่ยวข้องsedกับเว็บไซต์เดียวกันคือ: 'Sed' command # 1 : สำหรับแต่ละบรรทัดในไฟล์อินพุตที่กำหนดให้แปลงคำแรก 'the' with 'this' การค้นหาและการแปลงควรคำนึงถึงขนาดตัวพิมพ์ ก่อนอื่นเลยฉันลอง sed 's/the/this/' แต่ในกรณีทดสอบตัวอย่างนั้นล้มเหลว จากนั้นฉันก็ลอง sed 's/the /this /' และมันก็ใช้งานได้ ดังนั้นคำถามเกิดขึ้นช่องว่างที่สร้างขึ้นต่างกันอย่างไร ฉันทำอะไรบางอย่างหายไปหรือเปล่า
12 sed  whitespace 

4
bash: การใช้โพรซีเดอร์ find-select ที่ปลอดภัยแบบ whitespace ปลอดภัย
รับชื่อไฟล์เหล่านี้: $ ls -1 file file name otherfile bash ตัวเองทำดีกับช่องว่างที่ฝังตัว: $ for file in *; do echo "$file"; done file file name otherfile $ select file in *; do echo "$file"; done 1) file 2) file name 3) otherfile #? อย่างไรก็ตามบางครั้งฉันอาจไม่ต้องการทำงานกับไฟล์ทุกไฟล์หรือแม้กระทั่งในที่เข้มงวด$PWDซึ่งเป็นที่findมาซึ่งยังจัดการกับช่องว่างในนาม: $ find -type f -name file\* ./file ./file name …

2
ยกมาเทียบกับการขยายตัวสตริงที่ไม่ได้ยกมา
for i in $(xrandr); do echo "$i" ; done for i in "$(xrandr)"; do echo "$i"; done for i in "$(xrandr)"; do echo $i; done ฉันเข้าใจว่าทำไม 1 แตกต่างจาก 2 แต่เหตุใด 3 จึงให้ผลลัพธ์ที่แตกต่างจาก 2 โปรดอธิบายผลลัพธ์ด้วย คำพูดทำงานอย่างไรกับการขึ้นบรรทัดใหม่

4
เหตุใดการตัดจึงล้มเหลวด้วยการทุบตีและไม่ zsh
ฉันสร้างไฟล์ที่มีฟิลด์คั่นด้วยแท็บ echo foo$'\t'bar$'\t'baz$'\n'foo$'\t'bar$'\t'baz > input ฉันมีสคริปต์ชื่อต่อไปนี้ zsh.sh #!/usr/bin/env zsh while read line; do <<<$line cut -f 2 done < "$1" ฉันทดสอบมัน $ ./zsh.sh input bar bar มันใช้งานได้ดี อย่างไรก็ตามเมื่อฉันเปลี่ยนบรรทัดแรกเพื่อเรียกใช้bashแทนจะล้มเหลว $ ./bash.sh input foo bar baz foo bar baz ทำไมสิ่งนี้ถึงล้มเหลวbashและทำงานกับzsh? การแก้ไขปัญหาเพิ่มเติม การใช้เส้นทางตรงใน shebang แทนที่จะenvสร้างพฤติกรรมแบบเดียวกัน ไปป์กับechoแทนที่จะใช้ที่นี่สตริง<<<$lineยังสร้างลักษณะการทำงานเดียวกัน echo $line | cut -f 2กล่าวคือ ใช้awkแทนการcut …

3
วิธีการพิมพ์สตริงคั่นด้วย TAB ในทุบตี?
ฉันพยายามพิมพ์สองสตริงคั่นด้วย TAB ฉันเหนื่อย: echo -e 'foo\tbar' printf '%s\t%s\n' foo bar ทั้งคู่พิมพ์: foo bar โดยที่ช่องว่างระหว่างสองช่องนั้นเป็น 5 ช่องว่าง (ตามการเลือกผลลัพธ์ด้วยเมาส์ใน Putty) ฉันได้ลองใช้ CTRL + V แล้วกด TAB เมื่อพิมพ์คำสั่งด้วยผลลัพธ์เดียวกัน วิธีที่ถูกต้องในการบังคับแท็บให้พิมพ์เป็นแท็บคืออะไรฉันจึงสามารถเลือกเอาท์พุทและคัดลอกไปยังที่อื่นด้วยแท็บได้ และคำถามรอง: ทำไมทุบตีขยายแท็บลงในช่องว่าง อัปเดต : เห็นได้ชัดว่านี่เป็นปัญหาของ Putty: /superuser/656838/how-to-make-putty-display-tabs-within-a-file-instead-of-changing-them-to ช่องว่างที่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.