什么是删除行的前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}} }
用法: