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

时间:2009-06-09 19:01:36

标签: bash unix command truncate

例如,我可能想:

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

我当时认为tr可能有能力这样做,但我不确定。

6 个答案:

答案 0 :(得分:285)

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

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

答案 1 :(得分:43)

sed 's/^.\{5\}//' logfile 

你用你想要的数字替换5 ......它应该做的诀窍......

修改 如果每行 sed 's/^.\{5\}//g' logfile

答案 2 :(得分:21)

您可以使用cut

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

-c:个字符

file.txt:输入文件

new_file.txt:输出文件

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

还可以使用其他参数:&#39; N&#39; ,&#39; N-M&#39;,&#39; -M&#39;表示第n个字符,第n个到第m个字符,第一个到第m个字符。

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

答案 3 :(得分:4)

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

将删除前900个字符

cut使用900-将第900个字符显示在该行的末尾

然而,当我通过grep管道所有这些时,我没有得到任何东西

答案 4 :(得分:2)

我认为awk将是最好的工具,因为它可以过滤并在过滤行上执行必要的字符串操作功能:

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

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

答案 5 :(得分:2)

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

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

使用方法: enter image description here