如何使用awk,sed或grep将迭代器添加到每一行?

时间:2015-01-18 20:30:23

标签: regex bash shell awk sed

我如何使用grep,sed或awk将迭代器插入每行(行),文件的长度?

用csv格式说我的数据是这样的:

1,2,3,4
1,2,3,4
1,2,3,4
1,2,3,4
.
.
.
1,2,3,4

我想让它看起来像这样,使用grep,awk或sed(或其他任何有用的东西):

[func (func (func 0)) [1 2 3 4]]
[func (func (func 1)) [1 2 3 4]]
[func (func (func 2)) [1 2 3 4]]
.
.
.
[func (func (func N)) [1 2 3 4]]

其中N是文件中的行数。所以基本上将文件的行号插入行本身。

3 个答案:

答案 0 :(得分:3)

纯粹

while IFS=, read -r a1 a2 a3 a4; do
    echo "[func (func (func $((c++)))) [$a1 $a2 $a3 $a4]]"
done < file

答案 1 :(得分:1)

您可以使用awkNR变量。

这样的事情:

awk '{ gsub(/,/, " "); print "[func (func (func "(NR-1)")) ["$0"]]"; }' datafile

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed = file | sed 'N;s/\(.*\)\n\(.*\)/[func (func (func \1)) [\2]/'

这会将行号插入到输出流(Stdout)中,然后使用sed的第二次调用将其与其行配对并输出所需的字符串。