如果长度小于 4,则在行首添加一列到 linux 中的文件

use*_*962 2 linux text-processing csv

我在 linux 文件夹中有一个如下所示的文件。文件中应该有 4 列用逗号分隔值。但在某些行中只有 3 列。当有 3 列时,我想在行首添加一个空格。

输入:

col1,col2,col3,col4
a1,a2,a3,a4
b1,b2,b3,b4
c2,c3,c4
d1,d2,d3,d4
Run Code Online (Sandbox Code Playgroud)

输出:

col1,col2,col3,col4
a1,a2,a3,a4
b1,b2,b3,b4
,c2,c3,c4
d1,d2,d3,d4
Run Code Online (Sandbox Code Playgroud)

提前致谢

ste*_*ver 8

你可以使用 awk ex。

awk -F, 'NF==3 {$0=","$0} 1' file
Run Code Online (Sandbox Code Playgroud)

如果你有一个合适的最新版本的 GNU awk,你可以使用它就地将它应用到文件

gawk -i inplace -F, 'NF==3 {$0=","$0} 1' file
Run Code Online (Sandbox Code Playgroud)

否则,使用其他工具(例如sed或 )可能更容易perl

perl -i -F, -pe '$_ = "," . $_ if $#F == 2' file
Run Code Online (Sandbox Code Playgroud)

也许

sed -i'.bak' -e 's/,/,/3;t' -e 's/^/,/' file
Run Code Online (Sandbox Code Playgroud)

(尝试替换第三个逗号,如果失败,则在行首替换一个逗号)。