文字列内の文字の位置を確認する必要があります。
たとえば、文字列はですRAMSITALSKHMAN|1223333
。
grep -n '[^a-zA-Z0-9\$\~\%\#\^]'
|
与えられた文字列内の場所を見つける方法は?
ベストアンサー1
-b
単純テキストに対して同じ位置にあるバイトオフセットを取得するために使用できます(UTF-8または同様のテキストには該当しません)。
$ echo "RAMSITALSKHMAN|1223333" | grep -aob '|'
14:|
上記では、-a
スイッチを使用してバイナリファイルで作業するときに入力をテキストとして使用し、一致する文字のみを出力するように-o
切り替えました。
場所のみを希望する場合は、grepを使用して場所のみを抽出できます。
$ echo "RAMSITALSKHMAN|1223333" | grep -aob '|' | grep -oE '[0-9]+'
14
奇妙な出力が表示されたら、grepをチェックして色が有効になっていることを確認してください。--colors=never
grepに渡すか、grepコマンドの前にaを追加して色を無効にすることができます\
(これにより、エイリアスは無効になります)。たとえば、次のようになります。
$ echo "RAMSITALSKHMAN|1223333" | grep -aob '|' --color=never | \grep -oE '^[0-9]+'
14
複数の一致を返す文字列の場合、パイプを介してhead -n1
最初の一致を取得します。
上記の両方を使用していて、実行可能ファイル(スクリプトなど)を介してgrepが「エイリアス」になっている場合、エイリアスを使用した場合にのみ後者は機能しません。