この文字列から先行テキストを削除する方法

この文字列から先行テキストを削除する方法

この行から数字41まで、数字41までのすべての文字を削除する方法

##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin

答え1

41これが出力に含まれることを望むかどうかはわかりません。ここに2つのオプションセットがあります。

1. 最大テキストの削除41

実行している場合は、組み込みbash変数処理を使用できます。

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "${line#*41}"

他に何もないことを保証できる場合は、41次のものを使用できます。sed

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | sed 's/^.*41//'

GNUがある場合は、grep以下のすべての項目を選択できます。41

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | grep -Po '(?<=41).*'

2.までのテキストを削除してタグとして41使用します。##

実行している場合は、組み込みbash変数処理を使用できます。

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "${line#*?##}"

他に何もないことを保証できる場合は、##次のものを使用できます。sed

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | sed 's/^..*##//'

GNUがある場合は、grep以下のすべての項目を選択できます。##

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | grep -Po '(?<=.##).*'

答え2

sedを使用して、最初の数字まですべてを削除できます。

echo '##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin' | sed 's/[^0-9]*//'

ファイルから変更するには、次のようにします。

sed -i 's/[^0-9]*//' filename

お役に立てば幸い

乾杯

関連情報