sedやtrを使って「[digits]」などの文字列を削除するには?

sedやtrを使って「[digits]」などの文字列を削除するには?

[...]私は最近、テキストに迷惑な「」をたくさん含む大量の文書をダウンロードする必要がありました。このように:

エレクトロスコープ膜/足場において、様々な成長因子(例えば、血小板由来成長因子およびBMP2)を局所的に送達すると、インビトロで細胞生存率[41]およびインビボで骨再生が改善されることが示された[47]。 。スペースの制限により、著者は読者にこのトピックの最近出版された優れたレビューを参照して詳細を参照するように促します[34-36]。

希望の出力:

電気紡糸膜/足場において様々な増殖因子(例えば、血小板由来増殖因子およびBMP2)を局所的に送達すると、インビトロでの細胞活性および生体内での骨再生も増強されることが示された。スペースの制限により、著者は読者にこのトピックに関する最近公開された優れたレビューを参照して詳細を参照するように指示します。

この「」を使用trまたは削除するにはどうすればよいですか?頑張りましたsed[digits]

tr -d '[\*]' 

sed 's/[[*]]//g'

しかし、それらのどれも職業を持っていません。

エスケープはどこで行う必要があり、括弧内の他の文字(例:[血小板由来の成長因子とBMP 2])を削除せずにどのように削除できますか?

ベストアンサー1

そしてperl

perl -Mopen=locale -pe 's/\h*\[\d+(\p{dash}\d+)?\]//g' < your-file

\p{dash}文字と一致するものダッシュ句読点カテゴリ(例:-֊־᐀᠆--––––⁓⁻₋-⸗⸚⸺⸻⹀〜〰゠︱︲﹘﹣-)。

これにより、h水平スペースが削除されます。今後しかし、後ろにそれら[x]。ただし、これはサンプルから水平スペースを削除することで改善できることを意味しin vivo [47] . Dueます。in vivo . Due後ろに[x]最後の次!;:,.?または行の終わりが次の場合:

perl -Mopen=locale -pe 's/\h*\[\d+(\p{dash}\d+)?\](\h*(?=[!;:,.?]|$))?//g'

を使用すると、-Mopen=localeロケールの文字マップに従って文字がデコード/エンコードされます。カテゴリ(上記のダッシュ、数字、スペース)は、Unicodeデータに基づいて決定されます。各一致の文字リストは、Perlのバージョン(使用されているUnicodeのバージョンを決定します)によって異なります。たとえば、こことUTF-8エンコーディングを使用するロケール\dでは、0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯෦෧෨෩෪෫෬෭෮෯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᪀᪁᪂᪃᪄᪅᪆᪇᪈᪉᪐᪑᪒᪓᪔᪕᪖᪗᪘᪙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꧐꧑꧒꧓꧔꧕꧖꧗꧘꧙꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹0123456789

おすすめ記事