我如何使用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
是文件中的行数。所以基本上将文件的行号插入行本身。
答案 0 :(得分:3)
纯粹bash:
while IFS=, read -r a1 a2 a3 a4; do
echo "[func (func (func $((c++)))) [$a1 $a2 $a3 $a4]]"
done < file
答案 1 :(得分:1)
您可以使用awk
和NR
变量。
这样的事情:
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的第二次调用将其与其行配对并输出所需的字符串。