使用sed删除Linux中文本文件任意一行的前五个字符

JBe*_*Beg 56 unix linux sed

我需要一个单行删除文本文件的任何行上的前五个字符.我怎么能用sed做到这一点?

Gre*_*ill 118

用途cut:

cut -c6-
Run Code Online (Sandbox Code Playgroud)

这将打印从第6列开始的每行输入(第一列为1).

  • 只是为了详细说明@PSchwede的评论,即使您使用“-c”选项,GNU“cut”也会将所有字符视为字节。GNU `cut` 不支持多字节字符,并且在可预见的将来可能不会支持多字节字符 (4认同)
  • 在这里,cut 的性能比 sed 更好,但在 utf-8 编码字符上使用时遇到问题。 (2认同)

Phi*_*hil 60

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

手段

替换("s",替换)行首,然后替换5个字符(".").

使用sed或cut有更紧凑或灵活的方法来编写它.

  • @blarg尝试`sed's /.$//'` (3认同)

Ign*_*ams 14

sed 's/^.\{,5\}//' file.dat
Run Code Online (Sandbox Code Playgroud)

  • BSD sed不接受*最多*bound(`{,5}`),这是GNU特定的.对两者都有效的表达式将是`sed'/ ^.\ {5 \} //'file.dat` (3认同)

gho*_*g74 9

awk '{print substr($0,6)}' file
Run Code Online (Sandbox Code Playgroud)