区切り記号の前の行のテキストを削除する必要があります。
たとえば、
(123434): hello::{apple,orange,mango}.
まず、前のテキストを削除する必要があります:
。つまり(123434)
。
これを実行できるコマンドはLinuxにありますか?
答え1
このsed
コマンドはトリックを実行する必要があります。次のコマンドはファイルを上書きします。
sed -i 's/^[^:]*:/:/' file
出力のみを印刷するには、この-i
フラグを削除してください。出力を新しいファイルに入れるには、フラグを削除して-i
出力をリダイレクトします。
sed 's/^[^:]*:/:/' file > new_file
答え2
あなたはそれを使用することができますcut
:
echo '(123434): hello::{apple,orange,mango}.' | cut -d: -f2-
答え3
非常に簡単な方法でこれを行うことができます。吹く指示:
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
最後の例では、パターンが一致しないため、何も切り捨てられません。