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

4
วิธีการแตกสตริงที่ยาวเป็นหลายบรรทัดในพร้อมต์ read -p ภายในซอร์สโค้ด?
/bin/shฉันจะเขียนสคริปต์การติดตั้งที่จะใช้เป็น มีบรรทัดแจ้งให้ไฟล์: read -p "goat can try change directory if cd fails to do so. Would you like to add this feature? [Y|n] " REPLY ฉันต้องการแบ่งบรรทัดยาวเป็นหลายบรรทัดเพื่อไม่ให้มีเกิน 80 อักขระ ฉันกำลังพูดถึงบรรทัดภายในซอร์สโค้ดของสคริปต์ ไม่เกี่ยวกับบรรทัดที่จะพิมพ์จริงบนหน้าจอเมื่อสคริปต์ถูกดำเนินการ! สิ่งที่ฉันได้ลอง: วิธีการเริ่ม: read -p "goat can try change directory if cd fails to do so. " \ "Would you like …

8
แทนที่สตริงที่มีการขึ้นบรรทัดใหม่ในไฟล์ขนาดใหญ่
มีใครรู้บ้างเกี่ยวกับเครื่องมือที่ไม่ใช้บรรทัดในการค้นหา / แทนที่สตริงในวิธีที่ค่อนข้างมีประสิทธิภาพ ดูคำถามนี้ด้วย ฉันมีไฟล์ข้อความ + 2GB ที่ฉันต้องการประมวลผลคล้ายกับสิ่งที่ดูเหมือนจะทำ: sed -e 's/>\n/>/g' ซึ่งหมายความว่าผมต้องการที่จะลบบรรทัดใหม่ทั้งหมดที่เกิดขึ้นหลังจากที่มีแต่ไม่ได้ทุกที่อื่นดังนั้นกฎที่ออกมา>tr -d คำสั่งนี้ (ที่ฉันได้จากคำตอบของคำถามที่คล้ายกัน ) ล้มเหลวด้วยcouldn't re-allocate memory: sed --unbuffered ':a;N;$!ba;s/>\n/>/g' ดังนั้นมีวิธีการอื่นใดโดยไม่หันไปใช้ C? ฉันเกลียด Perl แต่ยินดีที่จะยกเว้นในกรณีนี้ :-) ฉันไม่รู้ว่าตัวละครใดที่ไม่ได้เกิดขึ้นในข้อมูลดังนั้นการแทนที่\nด้วยอักขระอื่นชั่วคราวเป็นสิ่งที่ฉันต้องการหลีกเลี่ยงถ้าเป็นไปได้ มีความคิดที่ดีมีใครบ้าง?

4
วิธีการตรวจสอบจุดสิ้นสุดของบรรทัดด้วย sed
sedฉันกำลังมองหาวิธีการที่จะดำเนินการเพียงการเปลี่ยนเมื่อตัวละครสุดท้ายคือขึ้นบรรทัดใหม่โดยใช้ ตัวอย่างเช่น lettersAtEndOfLine ถูกแทนที่ แต่นี่ไม่ใช่: lettersWithCharacterAfter& เนื่องจากsedทำงานไม่ดีกับการขึ้นบรรทัดใหม่จึงไม่ง่ายเหมือน $ sed -E "s/[a-zA-Z]*\n/replace/" file.txt สิ่งนี้จะสำเร็จได้อย่างไร

3
วิธีแปลงไฟล์ทั้งหมดในสาขาระบบไฟล์เป็นกลุ่มระหว่างรูปแบบตัวแบ่งบรรทัดของ Unix และ Windows
ทุกคนรู้ :-) ว่าในบรรทัดไฟล์ข้อความธรรมดาของ Windows จะถูกยกเลิกด้วย CR + LF และใน Unix & Linux - ด้วย LF เท่านั้น ฉันจะแปลงไฟล์โค้ดต้นฉบับทั้งหมดจากรูปแบบหนึ่งเป็นรูปแบบอื่นและสำรองอย่างรวดเร็วได้อย่างไร

7
เหตุใดฉันจึงได้รับ“ บรรทัด 1: $ ': \ r': ไม่พบคำสั่ง "
ฉันใช้ Cygwin บนแล็ปท็อปของฉัน (DOS) ฉันมีชุดของสคริปต์จากเพื่อนร่วมงานของฉันและของฉันเอง ฉันไม่ใช่คนไอทีไม่เก่งเรื่องยูนิกซ์ ฉันทำตามไวยากรณ์ของเพื่อนร่วมงานและสามารถจัดการสิ่งต่าง ๆ ได้ง่ายๆ สคริปต์ทำงานได้ดีบนแล็ปท็อปเครื่องเก่าของฉัน ฉันเพิ่งเปลี่ยนแล็ปท็อปติดตั้ง Cygwin เมื่อฉันเรียกใช้สคริปต์สคริปต์จะไม่ทำงาน นี่เป็นตัวอย่างข้อผิดพลาดที่ฉันได้รับ: line 1: $':\r': command not found line 5: syntax error near unexpected token `$'\r'' line 5: `fi นี่คือสคริปต์ 5 บรรทัดแรกของฉัน : iter=1 if [ -f iter.txt ] then rm ./iter.txt fi ใครช่วยกรุณาอธิบายว่าฉันจะแก้ไขปัญหานี้ได้อย่างไร?

5
sed ล้มเหลวในการลบอักขระบรรทัดใหม่
ฉันเคยใช้sedมาระยะหนึ่งแล้ว แต่นี่เป็นเรื่องแปลกที่ฉันมาด้วยซึ่งฉันไม่สามารถแก้ไขได้ ให้ฉันอธิบายปัญหาของฉันกับกรณีจริง ฉาก # 1 printf "ls" | xclip -selection clipboard echo "ls" | xclip -selection clipboard ในคำสั่งแรกฉันไปป์printfเอาท์พุทxclipเพื่อที่จะได้รับการคัดลอกไปยังคลิปบอร์ด ตอนนี้สิ่งที่printfแตกต่างechoไม่ได้แทรกบรรทัดใหม่ในตอนท้ายโดยค่าเริ่มต้น ดังนั้นหากฉันวางเนื้อหานี้ลงในเทอร์มินัลlsคำสั่งที่คัดลอกจะไม่ทำงานโดยอัตโนมัติ ในวินาทีมีบรรทัดใหม่ในตอนท้ายดังนั้นการวางเนื้อหาของคลิปบอร์ดยังส่งผลให้การรันคำสั่งในคลิปบอร์ด นี่เป็นสิ่งที่ไม่พึงปรารถนาสำหรับฉัน ดังนั้นฉันต้องการลบการขึ้นบรรทัดใหม่โดยใช้sedแต่มันล้มเหลวดังอธิบายในฉากด้านล่าง ฉาก # 2 echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard เนื้อหาในคลิปบอร์ดยังมีบรรทัดใหม่ เมื่อฉันวางลงในเทอร์มินัลคำสั่งจะทำงานโดยอัตโนมัติ \rฉันยังพยายามเอาตัวละครที่กลับรถ แต่นาดา ดูเหมือนว่าฉันขาดสิ่งที่สำคัญมาก / พื้นฐานไปที่นี่
12 sed  newlines 

2
ทำไม wc <<<“ $ string” แสดงความยาวหนึ่งไบต์นานกว่า printf“ $ string” | ห้องน้ำ?
โดยบังเอิญฉันพบว่าwcนับแตกต่างกันขึ้นอยู่กับว่ามันได้รับข้อมูลจากทุบตี: $ s='hello' $ wc -m &lt;&lt;&lt;"$s" 6 $ wc -c &lt;&lt;&lt;"$s" 6 $ printf '%s' "$s" | wc -m 5 $ printf '%s' "$s" | wc -c 5 นี่คือ - IMHO ทำให้สับสน - พฤติกรรมมีการบันทึกไว้ที่อื่นหรือไม่ สิ่งที่wcนับที่นี่ - นี่คือการขึ้นบรรทัดใหม่หรือไม่

1
ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว แต่ฉันเห็นได้!
ฉันพยายามเรียกใช้สคริปต์ python บน Raspberry PI ที่ไม่มีส่วนหัวโดยใช้ winSCP และได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: Command '"./areadetect_movie_21.py"' failed with return code 127 and error message /usr/bin/env: python : No such file or directory. เมื่อฉันลองและเรียกใช้จาก terminal ฉันได้รับ: : No such file or directory. ฉันลองสคริปต์ python ที่คล้ายกันในไดเรกทอรีเดียวกันกับ python shebang ที่เหมือนกันการอนุญาตแบบเดียวกันและการใช้ pi ผู้ใช้เดียวกันและใช้งานได้ ฉันยังทำlsและฉันสามารถดูไฟล์ได้ดังนั้นฉันจึงไม่รู้ว่าทำไมมันไม่ทำงาน

6
อ่านไฟล์ที่มุ่งเน้นบรรทัดซึ่งอาจไม่ลงท้ายด้วยการขึ้นบรรทัดใหม่
ฉันมีไฟล์ชื่อ/tmp/urlFileที่แต่ละบรรทัดแสดงถึง url ฉันพยายามอ่านจากไฟล์ดังต่อไปนี้: cat "/tmp/urlFile" | while read url do echo $url done หากบรรทัดสุดท้ายไม่ลงท้ายด้วยอักขระขึ้นบรรทัดใหม่บรรทัดนั้นจะไม่ถูกอ่าน ฉันสงสัยว่าทำไม เป็นไปได้ไหมที่จะอ่านทุกบรรทัดไม่ว่าจะจบลงด้วยการขึ้นบรรทัดใหม่หรือไม่?

3
BASH และพฤติกรรมการคืนรถ
ฉันมีหนึ่งคำถามที่รวดเร็ว เป็นเรื่องปกติหรือไม่ที่ bash (ฉันใช้ 4.4.11) ไม่แสดงบรรทัด / ข้อความที่คั่น / จบด้วย plain \r? ฉันรู้สึกประหลาดใจเล็กน้อยที่เห็นพฤติกรรมนี้: $ a=$(printf "hello\ragain\rgeorge\r\n") $ echo "$a" george แต่ข้อความ "hello อีกครั้ง" ยังคงอยู่ที่นั่นอย่างใด "ซ่อน": $ echo "$a" |od -w32 -t x1c 0000000 68 65 6c 6c 6f 0d 61 67 61 69 6e 0d 67 65 6f 72 67 …

4
เพิ่มบรรทัดใหม่ในชื่อไฟล์ด้วย `mv`
มันเป็นคำถามที่จริงจัง ฉันทดสอบบางawkสคริปต์และฉันต้องการไฟล์ที่มีบรรทัดใหม่ในชื่อของพวกเขา เป็นไปได้หรือไม่ที่จะเพิ่มบรรทัดใหม่ในชื่อไฟล์ด้วยmv? ตอนนี้ฉันสามารถทำได้ด้วยtouch: touch "foo bar" ด้วยการสัมผัสฉันเพิ่มอักขระบรรทัดใหม่ต่อสำเนาและวาง แต่ฉันไม่สามารถเขียนfooReturnbarในเปลือกของฉัน ฉันจะเปลี่ยนชื่อไฟล์เพื่อให้มีการขึ้นบรรทัดใหม่ในชื่อไฟล์ได้อย่างไร แก้ไข 2015/06/28; 07:08 น หากต้องการเพิ่มบรรทัดใหม่ในzshฉันสามารถใช้Alt+Return

2
จะค้นหาข้อความในไฟล์โดยไม่สนใจบรรทัดใหม่ได้อย่างไร
ฉันต้องการค้นหาข้อความที่อาจแบ่งออกเป็นหลายบรรทัดในไฟล์ grep ที่จะละเว้นการแบ่งบรรทัดและส่งคืนช่วงการจับคู่ของบรรทัด เช่นฉันจะค้นหาis an example fileและคาดหวังว่าจะพบได้ในไฟล์ต่อไปนี้: นี่คือ ไฟล์ตัวอย่าง การไม่ขึ้นอยู่กับช่องว่างนำหน้าหรือตามหลังการละเว้นพื้นที่สีขาวทั้งหมดในรูปแบบทั้งหมดอาจดีที่สุด (โดยหลักการแล้วการปฏิบัติตามลำดับของพื้นที่สีขาวเป็นพื้นที่เดียว) ทางออกที่ไม่เหมาะอย่างหนึ่งคือtr '\n' ' ' | grepการจำแนกระหว่างการจับคู่และการจับคู่ที่ไม่ตรงกัน แต่ไม่แสดงการจับคู่หรือจัดการกับไฟล์ขนาดใหญ่ได้ดี

4
แทนที่สตริงที่มีอักขระขึ้นบรรทัดใหม่
ด้วยbashเปลือกในไฟล์ที่มีแถวเหมือนคนดังต่อไปนี้ first "line" &lt;second&gt;line and so on ฉันต้องการแทนที่ด้วยหนึ่งครั้งหรือมากกว่านั้น"line"\n&lt;second&gt;ด้วยother charactersและรับในแต่ละครั้ง: first other characters line and so on ดังนั้นผมจึงต้องเปลี่ยนสตริงทั้งที่มีตัวอักษรพิเศษเช่น"และ&lt;และด้วยตัวอักษรขึ้นบรรทัดใหม่ หลังจากค้นหาคำตอบอื่น ๆ ฉันพบว่าsedสามารถยอมรับการขึ้นบรรทัดใหม่ทางด้านขวาของคำสั่ง (เช่นนั้นother charactersสตริง) แต่ไม่ใช่ทางด้านซ้าย มีวิธี (ง่ายกว่านี้ ) ในการรับผลลัพธ์นี้ด้วยsedหรือgrepไม่?

6
ฉันจะลบบรรทัดใหม่ต่อท้ายในทุบตีได้อย่างไร
ฉันกำลังมองหาสิ่งที่ชอบทำตัวของ chompPerl ฉันกำลังมองหาคำสั่งที่พิมพ์เพียงแค่อินพุตลบอักขระตัวสุดท้ายหากเป็นบรรทัดใหม่: $ printf "one\ntwo\n" | COMMAND_IM_LOOKING_FOR ; echo " done" one two done $ printf "one\ntwo" | COMMAND_IM_LOOKING_FOR ; echo " done" one two done (การทดแทนคำสั่งใน Bash และ Zsh ลบบรรทัดใหม่ที่ตามมาทั้งหมด แต่ฉันกำลังมองหาบางสิ่งที่จะลบบรรทัดใหม่ที่ต่อท้ายหนึ่งบรรทัด)

1
shebang line ไม่ทำงานกับ cr-lf
ทำไมส่วนของ shebang ของสคริปต์พื้นฐานต่อไปนี้จึงไม่ทำงาน: $ cat hello.sh #! /bin/sh echo Hello $ ./hello.sh bash: ./hello.sh: /bin/sh^M: bad interpreter: No such file or directory $ cat hello.py #! /usr/bin/env python3 print("Hello") $ ./hello.py : No such file or directory ในขณะที่การเรียกล่ามด้วยตนเองทำงาน: $ sh hello.sh Hello $ python3 hello.py Hello

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