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

例如,我可能想:

tail -f logfile | grep org.springframework | <command to remove first N characters>

我在想tr可能有能力做到这一点,但我不确定。

370800 次浏览
tail -f logfile | grep org.springframework | cut -c 900-

会删除前900个字符吗

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

然而,当我通过grep管道所有这些,我什么也得不到

使用cut。如。剥离每行的前4个字符(即从第5个字符开始):

tail -f logfile | grep org.springframework | cut -c 5-
sed 's/^.\{5\}//' logfile

然后把5换成你想要的数字…这应该能奏效……

<强>编辑 如果每一行<代码> sed的s / ^。5 \ \ {} / / g的日志文件< /代码> < / p >

你可以使用cut:

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

-c:字符

file.txt:输入文件

new_file.txt:输出文件

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

也可以有其他参数,比如'N', 'N-M', '-M'表示第N个字符,第N到第m个字符,第一个到第m个字符。

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

我认为awk将是最好的工具,因为它既可以过滤,也可以对过滤后的行执行必要的字符串操作函数:

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

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

下面是一个简单的函数,在bash中测试。函数的第一个参数是字符串,第二个参数是要剥离的字符数

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

使用:

$ stringStripNCharsFromStart "12abcdefgh-" 2
# 2abcdefgh-

截图:

 result from console的截图

x=hello


echo ${x:1}

返回嗨

根据需要将1替换为N