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 回答