File 如何在文件的每行开头添加不同的行

File 如何在文件的每行开头添加不同的行,file,variables,loops,unix,add,File,Variables,Loops,Unix,Add,我有一个文件如下所示: coffee soda pizza hamburger fries 我想在这些行的开头添加一行,这样它会给出以下内容: Enter 1 for: coffee Enter 2 for: soda Enter 3 for: pizza Enter 4 for: hamburger Enter 5 for: fries 我该怎么做?我猜我应该使用循环,但不知道从哪里开始。如果必须这样做,我会使用 grep -n ^ file |

我有一个文件如下所示:

coffee
soda
pizza
hamburger
fries 
我想在这些行的开头添加一行,这样它会给出以下内容:

Enter 1 for: coffee
Enter 2 for: soda
Enter 3 for: pizza
Enter 4 for: hamburger
Enter 5 for: fries

我该怎么做?我猜我应该使用循环,但不知道从哪里开始。

如果必须这样做,我会使用

grep -n ^ file |                         # prepend the line number and a : to each line
sed 's/^\([0-9]*\):/Enter \1 for:/'      # surround the line number with the text you need
grep的诀窍是^匹配每一行,包括空行,因为它表示所有有开始的行。所以你滥用了greps显示匹配行数的能力,在每行前面都有一个行号

sed部分是相当标准的-匹配一个模式,替换它,将匹配模式的某些部分的编号放入替换文本中


我希望从输出中省略pizza是一个复制/粘贴错误;如果没有,您必须相应地将模式调整为grep,如grep-n-v pizza file。

如果必须这样做,我会使用

grep -n ^ file |                         # prepend the line number and a : to each line
sed 's/^\([0-9]*\):/Enter \1 for:/'      # surround the line number with the text you need
grep的诀窍是^匹配每一行,包括空行,因为它表示所有有开始的行。所以你滥用了greps显示匹配行数的能力,在每行前面都有一个行号

sed部分是相当标准的-匹配一个模式,替换它,将匹配模式的某些部分的编号放入替换文本中

我希望从输出中省略pizza是一个复制/粘贴错误;如果没有,您必须相应地将模式调整为grep,如grep-n-v pizza文件

非常简单的方法。参数索引,它是您的计数器,您正在逐行打印所有文件内容。 对于每一行,您需要增加计数器

非常简单的方法。参数索引,它是您的计数器,您正在逐行打印所有文件内容。 对于每一行,您需要增加计数器。

使用awk

使用awk


是的,这是一个错误,谢谢你帮我抓住它!另外,sed能帮我增加这个数字吗?或者我每次都必须更改数字吗?是grep增加数字,而不是sed。试着只运行第一部分。sed只需获取grep生成的行号,并用您需要的文本将其包围。是的,这是一个错误,感谢您为我捕捉到它!另外,sed能帮我增加这个数字吗?或者我每次都必须更改数字吗?是grep增加数字,而不是sed。试着只运行第一部分。sed只获取grep生成的行号,并用所需的文本将其包围。
$ awk '{print "Enter "NR" for: "$0}' filename
Enter 1 for: coffee
Enter 2 for: soda
Enter 3 for: pizza
Enter 4 for: hamburger
Enter 5 for: fries