[...]
나는 최근에 텍스트에 짜증나는 " "이 많이 포함된 대량의 문서를 다운로드해야 했습니다 . 이와 같이:
전기방사 막/스캐폴드에서 다양한 성장 인자(예: 혈소판 유래 성장 인자 및 BMP 2)를 국소적으로 전달하면 시험관 내에서 세포 생존력[41]과 생체 내에서 뼈 재생이 향상되는 것으로 나타났습니다[47]. 공간 제한으로 인해 저자는 독자에게 이 주제에 대해 최근 출판된 우수한 리뷰를 참조하여 자세한 내용을 참조하도록 합니다[34-36].
원하는 출력:
전기방사 막/스캐폴드에서 다양한 성장 인자(예: 혈소판 유래 성장 인자 및 BMP 2)를 국소적으로 전달하면 시험관 내에서 세포 활성은 물론 생체 내에서 뼈 재생도 향상되는 것으로 나타났습니다. 공간 제한으로 인해 저자는 독자들에게 이 주제에 대해 최근 출판된 우수한 리뷰를 참조하여 자세한 내용을 참조하도록 합니다.
이 " "을(를) 사용 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
로케일의 문자 맵에 따라 문자가 디코딩/인코딩됩니다. 카테고리(위의 대시, 숫자, 공백)는 유니코드 데이터를 기반으로 결정됩니다. 각 일치 항목의 문자 목록은 Perl 버전(사용된 유니코드 버전을 결정함)에 따라 달라집니다. 예를 들어 여기와 UTF-8 인코딩을 사용하는 로케일 \d
에서는0123456789٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯୦୧୨୩୪୫୬୭୮୯௦௧௨௩௪௫௬௭௮௯౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫೬೭೮೯൦൧൨൩൪൫൬൭൮൯෦෧෨෩෪෫෬෭෮෯๐๑๒๓๔๕๖๗๘๙໐໑໒໓໔໕໖໗໘໙༠༡༢༣༤༥༦༧༨༩၀၁၂၃၄၅၆၇၈၉႐႑႒႓႔႕႖႗႘႙០១២៣៤៥៦៧៨៩᠐᠑᠒᠓᠔᠕᠖᠗᠘᠙᥆᥇᥈᥉᥊᥋᥌᥍᥎᥏᧐᧑᧒᧓᧔᧕᧖᧗᧘᧙᪀᪁᪂᪃᪄᪅᪆᪇᪈᪉᪐᪑᪒᪓᪔᪕᪖᪗᪘᪙᭐᭑᭒᭓᭔᭕᭖᭗᭘᭙᮰᮱᮲᮳᮴᮵᮶᮷᮸᮹᱀᱁᱂᱃᱄᱅᱆᱇᱈᱉᱐᱑᱒᱓᱔᱕᱖᱗᱘᱙꘠꘡꘢꘣꘤꘥꘦꘧꘨꘩꣐꣑꣒꣓꣔꣕꣖꣗꣘꣙꤀꤁꤂꤃꤄꤅꤆꤇꤈꤉꧐꧑꧒꧓꧔꧕꧖꧗꧘꧙꧰꧱꧲꧳꧴꧵꧶꧷꧸꧹꩐꩑꩒꩓꩔꩕꩖꩗꩘꩙꯰꯱꯲꯳꯴꯵꯶꯷꯸꯹0123456789
답변2
[
하나 이상의 숫자가 일치해야 합니다 ]
.
- 정규식에서는 특수 문자로 처리되므로 앞에 백슬래시를 사용하여 이스케이프 처리해야 합니다
[
.]
[0-9]
숫자는 다음 과 같이 표현될 수 있습니다 .[[:digit:]]
- 여러 개의 숫자가 필요하므로
+
표현하는 데 사용하십시오.하나 이상
그래서
sed -E 's/\[[[:digit:]]+\]//g'
예와 같이 숫자 범위를 일치시키려면 digitsdigits [34–36]
패턴을 약간 확장해야 합니다 . [
(대시는 표준 하이픈으로 표시되지 않지만 약간 더 긴 하이픈으로 표시됩니다.–
]
대시, 아니면 어쩌면대시.)
sed -E 's/\[[[:digit:]]+–[[:digit:]]+\]//g'
두 숫자를 모두 일치시키려면 대시와 두 번째 숫자를 괄호 안에 넣고 대시와 두 번째 숫자를 선택 사항으로 설정하고 다음 (
을 )
사용해야 합니다.?
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
산출:
전기방사 막/스캐폴드에서 여러 성장 인자(예: 혈소판 유래 성장 인자 및 뼈 형태형성 단백질)를 국소적으로 전달하면 생체 내에서 세포 생존 능력과 생체 내 뼈 재생이 향상되는 것으로 나타났습니다. 공간 제한으로 인해 저자는 독자들에게 이 주제에 대해 최근 출판된 우수한 리뷰를 참조하여 자세한 내용을 참조하도록 합니다.