処理するテキストファイル(*.txt)がありますが、「薬物関連」、「薬物関連」、「薬物関連」などハイフンでつながった単語を探したいと思います。
最初のアイテムを「薬物関連」に、2番目のアイテムを「薬物関連」に変換するのに役立ちます。ファイルにはこのような多くの用語があります。一度に「接続済み」、「リンク済み」、「関連」、その他の用語がある場合があります。
ベストアンサー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