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


238

たとえば、次のような場合があります。

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

私にtrはこれを行う能力があるかもしれないと思っていましたが、よくわかりません。

回答:


355

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

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

1
パイプが機能しない理由を知っていますか?基本的にそのコマンドを実行すると、「cut」は結果をstdoutに出力しません...「tail -f logfile | 5 -cカット」私は結果を見ることができます...問題は、私はcygwinのFYI感謝を使用していますグレップでなければなりません
les2

最後のパイプを追加してカットしないとどうなりますか?基本的に、行の最後の部分を削除した場合はどうなりますか?
LB40 2009年

パイプを「カット」に追加すると、ログファイルが「テール」になり、grepでフィルタリングされます(つまり、「org.springframework」が含まれるすべての行がstdoutに出力されます)...削除すると、ハングします。 'grep' 'cut'は適切に機能します... grepの使用方法に問題があると思います... cygwinの問題かもしれません
les2

1
ああ、なるほど...なぜしっぽを使うの?grep org.springframework logfileを実行してください。cut -c 5-でも、sedの方がいいと思います:-)
LB40 09/09/19

6
問題は、grepが大きなチャンクを切り取りに送る前にバッファリングすることです。これは、ターミナルに書き込んでいないことがわかるためです。grep --line-buffered "org.springframeworkその問題を解決するために使用します。
SteenSchütt14年

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

そしてあなたはあなたが望む数で5を置き換えます...それはトリックをするはずです...

行ごとに編集 sed 's/^.\{5\}//g' logfile


29

使用できます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番目の文字をそれぞれ意味します。

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


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

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

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

ただし、これらすべてをgrepにパイプ処理すると、何も得られません。


4
「cut -c 1-900」は「最初の900文字を削除」するのではなく、最初の900文字だけを残します。最初の900文字を削除する場合は、「cut -c
901-

また、@ iammichaelの回答ごとに、各行の最初の900文字です
Blair Conrad

1
'cut -c 900-'は最初の899文字を削除しますか?
Yiding Zhou

4

awkフィルターをかけた行で必要な文字列操作関数をフィルターにかけ、実行できるので、これは最良のツールだと思います。

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

または

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

1

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

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

使用法: ここに画像の説明を入力してください


2
これを単純化して$ {1:$ 2}をエコーすることができます
kdubs 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.