什么是删除行的前N个字符的unix命令?

例如,我可能想要:

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- 
 sed 's/^.\{5\}//' logfile 

你用你想要的数字代替5 …它应该做的伎俩…

编辑如果每一行sed 's/^.\{5\}//g' logfile

你可以使用cut

 cut -c N- file.txt > new_file.txt 

-c:字符

file.txt:input文件

new_file.txt:输出文件

N-:从N结束的字符被剪切并输出到新文件。

也可以有其他的参数,如:'N','N-M','-M'表示第n个字符,第n个到第m个字符,分别是第1个到第m个字符。

这将对input文件的每一行执行操作。

 tail -f logfile | grep org.springframework | cut -c 900- 

将删除前900个字符

cut使用900-显示第900个字符到行尾

但是,当我通过greppipe这一切,我什么都没有得到

我认为awk将是最好的工具,因为它可以筛选和执行必要的string操作函数的过滤行:

 tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}' 

要么

 tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)' 

这里是简单的function,在bash中testing。 函数的第一个参数是string,第二个参数是要被删除的字符的数量

function stringStripNCharsFromStart { echo ${1:$2:${#1}} }

用法: 在这里输入图像说明