처리할 텍스트 파일(*.txt)이 있는데 "약물 관련", "약물 관련", "약물 관련" 등 하이픈으로 연결된 단어를 찾고 싶습니다.
첫 번째 항목을 "약물 관련"으로, 두 번째 항목을 "약물 관련"으로 변환하는 데 도움이 필요합니다. 파일에는 이와 같은 많은 용어가 있을 수 있습니다. 한 번에 "연결됨", "링크됨", "관련됨"이며 다른 용어가 있을 수 있습니다.
답변1
perl -pi.back -e 's/(\w+)-(\w+ed)\b/$2 with $1/g' ./*.txt
이는 이식 가능하며 perl
설치된 모든 시스템에서 사용할 수 있습니다.
최근 GNU 시스템에서는 GNU를 사용하여 비슷한 작업을 수행할 수 있습니다 sed
.
sed -ri.back 's/(\w+)-(\w+ed)\b/\2 with \1/g'
POSIX적으로:
for f in ./*.txt; do
mv -i "$f" "$f.back" &&
sed -e :1 -e 's/\([[:alnum:]]\{1,\}\)-\([[:alnum:]]\{1,\}ed\)\(\([^[:alnum:]].*\)\{0,1\}\)$/\2 with \1\3/;t1' < "$f.back" > "$f"
done