区切り文字の前の行からテキストを削除する必要があります。
例えば:
(123434): hello::{Apple,orange,mango}.
最初にテキストを削除する必要があります:
。つまり、(123434)
。
Linuxにこのタスクを実行するコマンドはありますか?
このsed
コマンドでうまくいくはずです。次のコマンドはファイルを上書きします。
sed -i 's/^[^:]*:/:/' file
出力だけを出力するには、-i
フラグを削除します。出力を新しいファイルに入れるには、-i
フラグを削除して、出力をリダイレクトします。
sed 's/^[^:]*:/:/' file > new_file
cut
を使用できます:
echo '(123434): hello::{Apple,orange,mango}.' | cut -d: -f2-
これは非常に単純なBash命令で実行できます。
mytext="(123434): hello::{Apple,orange,mango}."
echo ${mytext#*)}
これは: hello::{Apple,orange,mango}.
。接頭辞と接尾辞も同様の方法でカットできます。さらに、接頭辞と接尾辞の定義にはワイルドカードを含めることができます。
プレフィックスをカット-最初のプレフィックスまでのワイルドカード一致:${variable#prefix}
接頭辞の切り取り-最後の接頭辞のワイルドカード一致まで:${variable##prefix}
サフィックスの切り取り-サフィックスの最初のワイルドカード一致まで:${variable%suffix}
サフィックスの切り取り-最後のサフィックスのワイルドカード一致まで:${variable%%suffix}
一見不明瞭に見える場合があります。次の例を参照してください。
mytext="xAxBxAxBx"
echo ${mytext#*A} # will print: xBxAxBx
echo ${mytext##*A} # will print: xBx
echo ${mytext%B*} # will print: xAxBxAx
echo ${mytext%%B*} # will print: xAx
echo ${mytext%%C*} # will print: xAxBxAxBx
最後の例では、パターンが一致しないため、何もカットされません。