我有一个看起来像这样的文件:
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
我该怎么做?我猜我应该使用循环,但不知道从哪里开始。
答案 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