例如,我可能想要:
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:
输入文件
new_file.txt:
输出文件
N-:
从第N个字符到结尾的字符将会被剪切并输出至新文件。
还可以使用其他参数,如:'N','N-M','-M',分别表示第N个字符、第N到第M个字符、前M个字符。
此操作将对输入文件的每一行执行。
x=hello
echo ${x:1}
返回 ello
根据需要将 1 替换为 N
tail -f logfile | grep org.springframework | cut -c 900-
将删除前900个字符
cut
使用了900-来表示从第900个字符到行尾的内容
然而,当我将所有这些内容通过grep管道传输时,却没有任何返回结果。
我认为awk
是最适合的工具,因为它既可以过滤,又可以对过滤后的行执行必要的字符串操作函数:
tail -f logfile | awk '/org.springframework/ {print substr($0, 6)}'
或者
tail -f logfile | awk '/org.springframework/ && sub(/^.{5}/,"",$0)'
grep --line-buffered "org.springframework"
来解决此问题。 - Steen Schütt