2

F1.txt

tom a b c d e boy

bob a b c sun

harry a c d e girl

結果

F2.txt

tom1 a1 b1 c1 d1 e1 boy1

tom2 a2 b2 c2 sun2

tom3 a3 c3 d3 e3 girl3

みなさん、こんにちは。私はPerlを初めて使用します。この新しい問題について、親切に手伝っていただけませんか。私はファイルを持っていますF1.txt。私の仕事は、上記の例に示すように、ファイル内の各文字列の後にその行番号に従って番号を割り当てることです。私はこれまで、このPerlワンライナーを使用して各行に番号を割り当てることができました。

perl -pe '$_= ++$a." $_" if /./'
4

3 に答える 3

2

多分次のように:

perl -pe 's/(?<=\w)\b/$./g;'
于 2012-08-07T08:56:51.153 に答える
2

特別な変数$.は、現在の行番号を保持します。

正規表現/(?<=\w)\b/gは、単語(または数字またはアンダースコア)の両端に一致します。または、より正確には、一致に含めない「単語」文字が前に付いた単語境界。アサーションの\b幅はゼロです。正規表現を使用して、s/(?<=\S)(?=\s|$)/$./gスペース以外の各シーケンスの後に行番号を付けます。

置換演算子を使用してs///g、次のように行番号を追加できます。

echo -e "a b\nc d" | perl -ne 's/(?<=\w)\b/$./g; print'

プリント

a1 b1
c2 d2
于 2012-08-07T08:58:24.697 に答える
0

ワンライナーで:

perl -pe 's/(?<=\w)\b/$./g' F1.txt >F2.txt
于 2012-08-07T08:56:46.263 に答える