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

时间:2014-02-25 20:24:13

标签: 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

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

3 个答案:

答案 0 :(得分:2)

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

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的技巧是^匹配每一行,包括空行,因为它表示“所有行都有一个开头”。所以你滥用grep显示匹配行数的能力,以获得每行前面的行号。

sed部分相当标准 - 匹配模式,替换它,将匹配模式的一部分(数字)放入替换文本中。

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

答案 1 :(得分:1)

index=1
for i in `cat ~/myFile`; do
   echo "Enter $index for: $i"
   index=$((index+1))
done

很简单的方法。参数“index”,它是您的计数器,并且您将逐行打印所有文件内容。 对于每一行,您需要增加计数器。

答案 2 :(得分:1)

使用awk

$ 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