ฉันต้องการเพิ่มแฮชในบรรทัดทั้งหมดในไฟล์ข้อความปกติ ฉันใช้ได้กับทั้งการใช้งานเทอร์มินัลและ GUI - ฉันแค่ต้องทำให้เสร็จ
ฉันต้องการเพิ่มแฮชในบรรทัดทั้งหมดในไฟล์ข้อความปกติ ฉันใช้ได้กับทั้งการใช้งานเทอร์มินัลและ GUI - ฉันแค่ต้องทำให้เสร็จ
คำตอบ:
คุณสามารถใช้sed
เพื่อ:
sed -i.bak 's/^/##/' file
นี้แทนที่จุดเริ่มต้นของบรรทัด ( ^
) ##
ด้วย
ด้วย-i.bak
สวิทช์sed
แก้ไขไฟล์ในสถานที่ .bak
แต่สร้างสำเนาสำรองที่มีนามสกุล
sed 's/^\(.*\)$/##\1/'
กัน
นี่คือวิธีการแก้ปัญหานี้โดยใช้ Perl
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-p
perl -pe 's/^/##/' infile > outfile
(นอกจากนี้ยังมี-i[extension]
สวิตช์สำหรับแทนที่ไฟล์เป้าหมายในสถานที่) perldoc.perl.org/perlrun.html#%2a-p%2a
ในขณะที่เราอยู่ที่:
gawk -i inplace '{print "##"$0}' infile
ใช้ปลั๊กอินแก้ไข inplace (ใหม่ล่าสุด) สำหรับ GNU awk 4.1.0+
นี่คือbash
วิธี:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( ในbash
เชลล์การรันread -r
โดยไม่มีอาร์กิวเมนต์อื่นทำงานเหมือนIFS= read -r REPLY
)
สิ่งนี้ได้รับแรงบันดาลใจมาจากโซลูชั่น perl ของ beav_35ซึ่งฉันยอมรับว่าอาจทำงานได้เร็วขึ้นมากสำหรับไฟล์ขนาดใหญ่เนื่องจากperl
คาดว่าจะมีประสิทธิภาพมากกว่าเชลล์เมื่อพูดถึงการประมวลผลข้อความ
sed -i
ไม่ใช่ POSIX-standard ดังนั้นถ้าคุณเป็นคนเจ้าระเบียบคุณจะต้องการใช้ed
:
printf ",s/^/##/\nw\nq" | ed -s file.txt
นี่เป็นperl
วิธีที่ง่ายกว่าการนำเสนอที่อื่น:
perl -pi -e 'print "##"' YOURFILEHERE
นี้ (AB) ใช้ความจริงที่ว่าพิมพ์บรรทัดหลังจากรันคำสั่งที่กำหนดในperl -p
-e
คุณสามารถใช้ Vim ในโหมด Ex:
ex -sc '%s/^/##/|x' file
%
เลือกทุกบรรทัด
s
แทน
x
บันทึกและปิด
สามารถทำได้ด้วยฟังก์ชั่นการทำแผนที่ของงูใหญ่และการเปลี่ยนเส้นทาง stdin:
$ cat input.txt
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))' < input.txt
##lorem ipsum
##quick brown fox
##hello world
บันทึกผลลัพธ์เป็นไฟล์ใหม่และใช้แทนต้นฉบับ
sed 's/^/##/' -i file
เสมอ: . ในกรณีนี้จะเป็นที่ต้องการเนื่องจากไม่ผิดพลาด ในกรณีอื่นคำสั่งนี้สามารถใช้ร่วมกับdiff -u file.bak file
เพื่อดูความแตกต่าง (ถ้าจำเป็นให้ไพพ์ผ่านless
) หากยืนยันว่าใช้งานได้จะสามารถลบข้อมูลสำรองได้mv file.bak file
มิฉะนั้นก็จะได้รับการบูรณะด้วยง่าย