単語をファイルの行と場所の番号に置き換える必要があります。
ファイル 1 には以下が含まれます。
ABC XYZ UIO WER GFH
DFG JHKS
WEQ RWT DSW
ANSN WERER WERT QAZX UWRE AA
その内容を次のように交換する必要があります。
S_11 S_12 S_13 S_14 S_15
S_21 S_22
S_31 S_32 S_33
S_41 S_42 S_43 S_44 S_45 S_46
その言葉は再び繰り返されません。各ファイルには異なるセットと単語数があります。
ベストアンサー1
perl
- に基づく別の方法:
perl -pe 'my $i; s{\S+}{"S_$." . ++$i}ge'
S_<line-number><word-number>
これは、既存の空白を維持しながら、各行のASCIIではなく空白文字のすべてのシーケンスを置き換えます。
入力にASCII以外の空白文字を含めることができる場合は、次のようになります。
U+0085 次行
U+00A0 改行なしの空白
U+1680 OGHAM 空白表示
U+2000 EN QUAD
U+2001 EM QUAD
U+2002 EN 空白
U+2003 EM 空白
U+2004 空白 3 個ごとに
U+2005 空白 はい犬
U +2006六つのスペース
U + 2007
数字スペースU + 2008句読点スペース
U + 2009細いスペース
U + 200A髪の毛スペース
U + 2028行区切り文字
U + 2029段落区切り文字
U + 202F改行なしの狭いスペース
U + 205F中級数
U+ 3000表の文字スペース
ユーザーのロケールに従ってエンコードされ、その-Mopen=locale
オプションを追加できます。
「改行しない」スペース(上記のU + 00A0、U + 2007、およびU + 202F)は区切り文字と見なすべきではないので、除外することも除外しないこともあります。perl
PCRE(含む(*UCP)
)にはこれが含まれますが、GNUロケール[:space:]
CTYPE
カテゴリには含まれていません。私のシステムでは、U + 0085がロケールに含まれておらず、[:space:]
PCREにもU + 180Eモンゴル語コレクションの区切り記号(ここ)が含まれていることがわかりました。Unicodeでは空白として分類されていますが、もはや分類されません。)。キャラクターperl
も見てください\PZ
いいえ(大文字p
)区切り文字と\P{Zs}
文字に分類いいえスペース区切り文字に分類されます(TABを含む制御文字は区切り文字とは見なされません)。私はこれが\p{Zs}
それ自体のサブセットであることがわかりました。\pZ
はい。サブセットです。\s