ฉันมีไฟล์ที่ฉันต้องการกำจัดทุกอย่างหลังจากแรก;
ในทุกบรรทัด
ดังนั้นไฟล์เช่นนี้:
sdfsdsdf;
fsdfsddf;sdfsd;
จะทำให้เกิดสิ่งนี้:
sdfsdsdf
fsdfsddf
เราได้ตรวจสอบและgrep
sed
ฉันขอขอบคุณคำตอบที่รวมคำสั่งทั้งสองนี้
ฉันมีไฟล์ที่ฉันต้องการกำจัดทุกอย่างหลังจากแรก;
ในทุกบรรทัด
ดังนั้นไฟล์เช่นนี้:
sdfsdsdf;
fsdfsddf;sdfsd;
จะทำให้เกิดสิ่งนี้:
sdfsdsdf
fsdfsddf
เราได้ตรวจสอบและgrep
sed
ฉันขอขอบคุณคำตอบที่รวมคำสั่งทั้งสองนี้
คำตอบ:
sed
อาจจะง่ายและเร็วกว่า awk หรือ perl ในกรณีนี้:
sed 's/^\([^;][^;]*\);.*$/\1/' some_file_name
อีกตัวเลือกหนึ่งคือใช้cut
คำสั่ง
cat a.file | cut -d';' -f1
ฉันมักจะใช้awk
สิ่งต่าง ๆ เช่นนี้:
cat a.file | awk -F=";" '{ print $1 }'
ที่จะนำแต่ละบรรทัดของไฟล์และพิมพ์กลุ่มแรกก่อนที่ตัวคั่น -F
cat
การใช้งานที่ไร้ประโยชน์ของ
นี่คือวิธีการทำโดยใช้ GNU grep
:
grep -Po "^[^;]+(?=;?)" filename
grep -Eo '^[^;]+;' filename
เกือบจะได้มันแค่พิมพ์ตัวละครตัวเดียวมากเกินไป grep -Eo '^[^;]+' filename
เกือบจะได้รับมันเกินไป แต่ก็ยังจะพิมพ์ฉบับสมบูรณ์ (ไม่ว่างเปล่า) ;
เส้นที่ไม่ได้ใด ๆ
sed 's/;.*//'