sed删除前5行以外的剩余字符

use*_*172 7 sed character line

什么是sed命令删除除前5个前导字符之外的所有字符,使用sed?我已经尝试过'倒退'(恢复删除),但这不是最优雅的解决方案.

pot*_*ong 9

这可能适合你(GNU sed):

echo '1234567890' | sed 's/.//6g'
12345
Run Code Online (Sandbox Code Playgroud)

要么:

echo '1234567890' | cut -c-5
12345
Run Code Online (Sandbox Code Playgroud)


Ant*_*ine 3

试试这个(在行开头重复 5 次“任意”字符,并将其保存在第一组中,然后重复任意次数的任意字符,并将匹配的字符串替换为第一组):

sed 's/^\(.\{5\}\).*/\1/'
Run Code Online (Sandbox Code Playgroud)

或者 mouviciel 建议的替代方案:

sed 's/^\(.....\).*/\1/'
Run Code Online (Sandbox Code Playgroud)

(只要您想要的第一个字符的数量不会变得太大,它就更具可读性)

  • `sed 's/^\(.....\).*/\1/'` 短一个字符,更易于键入和阅读。无论如何+1。 (2认同)