ハイフンで連結された単語のテキスト処理

ハイフンで連結された単語のテキスト処理

処理するテキストファイル(*.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

おすすめ記事