我有一个像以下
这样的大清单Afghanistan
Albania
Algeria
Andorra
Angola
.
.
如何使用某些Linux实用程序自动生成列表,而无需手动执行?
["Afghanistan",1],
["Albania",2],
["Algeria",3],
["Andorra",4],
.
.
使用sublime文本搜索^(.*)$
并替换["\1",],
我能够获得以下内容
["Afghanistan",],
["Albania",],
["Algeria",],
["Andorra",],
.
.
如何添加编号?
答案 0 :(得分:4)
这个awk:
$ awk '{ print "[\"" $0 "\","++var"]," }' file
["Afghanistan",1],
["Albania",2],
["Algeria",3],
["Andorra",4],
["Angola",5],
["
。",
+变量+ ],"
。通过说++variable
,我们使变量值从1
开始打印,然后从文件末尾开始打印。如果您想从另一个号码开始,您可以声明之前的值:
$ awk -v var=5 '{ print "[\"" $0 "\","++var"]," }' file
["Afghanistan",6],
["Albania",7],
["Algeria",8],
["Andorra",9],
["Angola",10],
答案 1 :(得分:2)
在awk中这样的事情如何:
awk '{printf "[\"%s\",%d],\n", $0, NR}' file
这只是处理文件的每一行,并以您需要的格式包装它。 NR
是一个特殊变量,对应于当前记录(行)编号。
使用printf
(我忘了!)要记住的一件事是你必须手动追加换行符"\n"
...如果可移植性是一个问题,你可以使用特殊变量{{1 (输出记录分隔符),它应对应于您平台上的换行符:
ORS
如果您使用awk '{printf "[\"%s\",%d],%s", $0, NR, ORS}' file
并自己连接字符串(如fedorqui has done),则会自动附加输出记录分隔符,因此您无需担心这些事情。
答案 2 :(得分:0)
尝试下面的awk,
awk '{print "[\""$0"\","NR"],"}' filename