ตัวอย่างเช่นฉันอาจต้องการ:
tail -f logfile | grep org.springframework | <command to remove first N characters>
ฉันคิดว่าtr
อาจมีความสามารถในการทำเช่นนี้ แต่ฉันไม่แน่ใจ
ตัวอย่างเช่นฉันอาจต้องการ:
tail -f logfile | grep org.springframework | <command to remove first N characters>
ฉันคิดว่าtr
อาจมีความสามารถในการทำเช่นนี้ แต่ฉันไม่แน่ใจ
คำตอบ:
cut
ใช้ เช่น. เพื่อตัดอักขระ 4 ตัวแรกของแต่ละบรรทัด (เช่นเริ่มบนอักขระตัวที่ 5):
tail -f logfile | grep org.springframework | cut -c 5-
grep --line-buffered "org.springframework
เพื่อแก้ไขปัญหานั้น
sed 's/^.\{5\}//' logfile
และคุณแทนที่ 5 ด้วยจำนวนที่คุณต้องการ ... มันควรจะทำเคล็ดลับ ...
แก้ไข
ถ้าสำหรับแต่ละบรรทัด
sed 's/^.\{5\}//g' logfile
คุณสามารถใช้cut
:
cut -c N- file.txt > new_file.txt
-c:
ตัวละคร
file.txt:
ไฟล์อินพุต
new_file.txt:
ไฟล์ที่ส่งออก
N-:
อักขระจาก N ถึงจุดสิ้นสุดที่จะตัดและส่งออกไปยังไฟล์ใหม่
ยังสามารถมีเนื้อหาอื่น ๆ เช่น: 'N', 'N-M', '-M' หมายถึงอักขระที่ n, อักขระที่ n ถึง mth, ตัวอักษรแรกถึง mth ตามลำดับ
สิ่งนี้จะดำเนินการกับแต่ละบรรทัดของไฟล์อินพุต
tail -f logfile | grep org.springframework | cut -c 900-
จะลบอักขระแรก 900 ตัว
cut
ใช้ 900- เพื่อแสดงอักขระที่ 900 ถึงท้ายบรรทัด
อย่างไรก็ตามเมื่อฉันทำสิ่งเหล่านี้ผ่าน grep ฉันไม่ได้อะไรเลย
ฉันคิดว่าawk
จะเป็นเครื่องมือที่ดีที่สุดสำหรับสิ่งนี้เพราะมันสามารถกรองและดำเนินการฟังก์ชั่นการจัดการสตริงที่จำเป็นในบรรทัดที่กรอง:
tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}'
หรือ
tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'
นี่คือฟังก์ชั่นที่เรียบง่ายผ่านการทดสอบในทุบตี ฟังก์ชั่น param แรกคือ string, param ที่ 2 คือจำนวนอักขระที่จะแยก
function stringStripNCharsFromStart {
echo ${1:$2:${#1}}
}