Shell 在文件的每一行的特定位置添加值
这是linux系统中的csv文件。这是文件中的一行 :/var/opt/data#vi data_2018_07.csvShell 在文件的每一行的特定位置添加值,shell,Shell,这是linux系统中的csv文件。这是文件中的一行 :/var/opt/data#vi data_2018_07.csv LGPAR,数据,6154326198747321900,gprs,464623201315531,NRI,1.45890,0.000000,0.0000,2016-01-12 01:50:582016-01-12 15:50:58,0,11,0,0,0,0,02550,NO,NO,NO,1056.gz 类似地,我们在该文件中有300000行。我们所需要的只是在每一行迭代中的
LGPAR,数据,6154326198747321900,gprs,464623201315531,NRI,1.45890,0.000000,0.0000,2016-01-12 01:50:582016-01-12 15:50:58,0,11,0,0,0,0,02550,NO,NO,NO,1056.gz
类似地,我们在该文件中有300000行。我们所需要的只是在每一行迭代中的NO,xxxx.gz之间添加增量值(第24个值)
LGPAR,数据,6154326198747321900,gprs,464623201315531,NRI,1.45890,0.000000,0.0000,2016-01-12 01:50:582016-01-12 15:50:58,0,11,0,0,0,0,02550,NO,NO,NO,11056.gz
LGRDR,数据,6154326198747321900,gprs,464623201315531,NRI,1.45890,0.000000,0.0000,2016-01-12 01:50:582016-01-12 15:50:58,0,11,0,0,0,02550,NO,NO,NO,21057.gz
我们可以使用一个小的shell脚本在所有行的完整文件中这样做吗?注意:每行中的行不同。使用awk的快捷方式:
awk -F'[.,]' '{x=1+$(NF-1);sub(/[0-9]+\.gz/,x".gz")}7' file
使用一些数据进行测试:
kent$ cat f
foo,bar,foo,bar,123.gz
foo,bar,foo,bar,1057.gz
kent$ awk -F'[.,]' '{x=1+$(NF-1);sub(/[0-9]+\.gz/,x".gz")}7' f
foo,bar,foo,bar,124.gz
foo,bar,foo,bar,1058.gz