[...]
私は最近、テキストに迷惑な「」をたくさん含む大量の文書をダウンロードする必要がありました。このように:
エレクトロスコープ膜/足場において、様々な成長因子(例えば、血小板由来成長因子および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
答え2
[
1つ以上の数字が一致する必要があります]
。
- 正規表現では特殊文字で処理されるため、前にバックスラッシュを使用してエスケープする必要があります
[
。]
[0-9]
数字は次のように表現できます。[[:digit:]]
- 複数の数字が必要なので、
+
表現に使用します。1つ以上
だから
sed -E 's/\[[[:digit:]]+\]//g'
例のように数値範囲を一致させるには、digitsdigits[34–36]
パターンを少し拡張する必要があります。[
(ダッシュは標準ハイフンでは表示されませんが、やや長いハイフンで表示されます。–
]
ダッシュ、または多分ダッシュ.)
sed -E 's/\[[[:digit:]]+–[[:digit:]]+\]//g'
両方の数字を一致させるには、ダッシュと2番目の数字を括弧内に入れ、ダッシュと2番目の数字をオプションに設定し、次のものを使用する必要があり(
ます)
。?
sed -E 's/\[[[:digit:]]+(–[[:digit:]]+)?\]//g'
私は全体的にERE(拡張正規表現)を使用していますsed -E
。これは、より多くの文字が暗黙的に特殊でバックスラッシュでマークする必要がないことを意味します。
答え3
この試み:
# it also removes the extra spaces
$ sed -e 's/\[[0-9–]*\]//g;s/[[:blank:]]\+/ /g;s/[[:blank:]]\([\.?!:;,]\+\)/\1/g' file
出力:
エレクトロスコープ膜/足場において、いくつかの成長因子(例えば、血小板由来成長因子および骨形態形成タンパク質)を局所的に送達すると、インビボでの細胞生存能力およびインビボ骨再生が改善されることが示された。スペースの制限により、著者は読者にこのトピックに関する最近公開された優れたレビューを参照して詳細を参照するように指示します。