0

基本上,我一直在想办法从每行中取出一个四位数字并将其粘贴到行尾,并在前面加上 pass 字样。IE

拿这个文件:

Home1234 10.10.10.1
Home1248 10.10.10.2 
Home0934 10.10.10.3 
Home0047 10.10.10.4  

之后应该是这样的:

Home1234 10.10.10.1 pass1234
Home1248 10.10.10.2 pass1248
Home0934 10.10.10.3 pass0934
Home0047 10.10.10.4 pass0047
4

4 回答 4

0

你可以试试这个:

awk '{a=substr($1,5,4); print $0" pass"a}' YOUR_FILE
  • substr($1,5,4)NNNNHomeNNNNvar获取和存储a
  • print $0" pass"a打印所有行加上 vara

如果文本并不总是Home不同的大小,您可以使用:

awk '{a=substr($1,length($1)-3,4); print $0" pass"a}' YOUR_FILE
于 2013-03-29T11:04:29.880 回答
0

这个 awk one-liner 可以帮助你:

awk '{n=substr($1,length($1)-3);$0=$0" pass"n}1' file
于 2013-03-29T11:05:47.293 回答
0

你的问题没有很好地定义(你想用这样的输入做什么:1234 5678 3333 10.3.5.5?),但也许:

sed '/^\([^ ]*\([0-9]\{4\}\).*\)/s//\1 pass\2/' input
于 2013-03-29T12:01:39.673 回答
0

使用 & 的另一个 sed 变体(粘贴所有匹配的内容):

sed -ie 's/^.*\([0-9]\{4\}\).*/& pass\1/' yourfile
于 2013-03-29T14:41:04.490 回答