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

How to add iterator to each line using awk, sed or grep?

我如何使用 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 是文件中的行数。所以基本上是将文件的行号插入行本身。

您可以使用 awkNR 变量。

像这样:

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

:

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

这可能对你有用 (GNU sed):

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

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