7

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

4

2 回答 2

10

这可能对您有用(GNU sed):

echo '1234567890' | sed 's/.//6g'
12345

或者:

echo '1234567890' | cut -c-5
12345
于 2012-05-23T13:09:09.123 回答
3

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

sed 's/^\(.\{5\}\).*/\1/'

或 mouviciel 建议的替代方案:

sed 's/^\(.....\).*/\1/'

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

于 2012-05-23T11:00:36.817 回答