以下の場合があります。
[email protected]
[email protected]
[email protected]
私はこれを次に変換しようとしています。
[email protected]
[email protected]
[email protected]
したがって、最初の「_」(含む)から@(除外)まですべての項目を削除する必要があります。
何かが、実際には動作しません。
このスレッドに基づいて:一度に 2 つの区切り記号に基づいて切り取り、そしてこのU&L Q&A:区切り文字の最初の出現に文字列を分割する。
sed 's/^.*_\([^ ]*\) .*\@\([^$]*\)$/\1 \2/' infile
しかし幸運はありません。ベルを鳴らしたい人はいますか?
ベストアンサー1
正確に何をしているのかわかりませんが、次のことができますsed
。
$ sed 's/\(case\).*\(@test.com\)/\1\2/' 87529.txt
[email protected]
[email protected]
[email protected]
case
これにより、との間のすべての内容が効果的に整理されます@
。
次のようにすることができますawk
:
$ awk -F@ '{split($1,a,"_"); print a[1]"@"$2}' 87529.txt
次の方法で行うこともできますperl
(evisoupの方法に似ています)。
$ perl -p -e 's/_.*@/@/g' 87529.txt
またはあなたは使用することができますperl
未来志向の施設:
$ perl -p -e 's/_.*(?=@)//g' 87529.txt
メモ:LookaheadとLookbehindを使用すると、正規表現perl
で実行される操作に文字列を含めず、一致させる正規表現パターンに文字列を含めることができます。カラット(^
) - 行の始まりとドル($
) - 行の終わりの動的バージョンだと思います。@
削除してからもう一度追加するよりも少し面倒です。