awk 将一列更改为另一列

awk 将一列更改为另一列

我想用这样的数据库文件替换第 2 列 os

INSERT INTO db1 VALUES ('2', '33', '3', '1975', '3', '5', '1');
INSERT INTO db1 VALUES ('4', '23544', '1', '1987', '3', '1', '1');
INSERT INTO db1 VALUES ('2', '343', '3', '1975', '3', '5', '1');
INSERT INTO db1 VALUES ('4', '21', '1', '1987', '3', '1', '1');

我努力了

awk -F\' '{print NR-1,$2}'

可以用 NR-1 代替第 2 列吗?

我想要这样的结果(参见第二个数字字段)

INSERT INTO db1 VALUES ('2', '1', '3', '1975', '3', '5', '1');
INSERT INTO db1 VALUES ('4', '2', '1', '1987', '3', '1', '1');
INSERT INTO db1 VALUES ('2', '3', '3', '1975', '3', '5', '1');
INSERT INTO db1 VALUES ('4', '4', '1', '1987', '3', '1', '1');

答案1

尝试:

$ awk -F\' -vOFS=\' '{$4=FNR}1' file
INSERT INTO db1 VALUES ('2', '1', '3', '1975', '3', '5', '1');
INSERT INTO db1 VALUES ('4', '2', '1', '1987', '3', '1', '1');
INSERT INTO db1 VALUES ('2', '3', '3', '1975', '3', '5', '1');
INSERT INTO db1 VALUES ('4', '4', '1', '1987', '3', '1', '1');

相关内容