web-dev-qa-db-ja.com

行の最初のN文字を削除するためのUNIXコマンドとは何ですか?

たとえば、次のことができます。

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

trがこれを実行できる可能性があると考えていましたが、よくわかりません。

189
les2

cutを使用します。例えば。各行の最初の4文字を削除するには(つまり、5番目の文字から開始):

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

そして、あなたが望む数で5を置き換えます...トリックを行う必要があります...

EDIT if各行sed 's/^.\{5\}//g' logfileの場合

43
LB40

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番目の文字を意味します。

これにより、入力ファイルの各行に対して操作が実行されます。

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

最初の900文字を削除します

cutは900-を使用して、900番目の文字を行末まで表示します

しかし、このすべてをgrep経由でパイプしても、何も得られません

4
les2

awkは、フィルター処理された行で必要な文字列操作機能をフィルター処理および実行できるため、これに最適なツールだと思います。

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

または

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

以下は、bashでテストされた単純な関数です。関数の最初のパラメーターは文字列、2番目のパラメーターは除去される文字数

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

使用法: - enter image description here

1
To Kra