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)
提前致谢
你可以使用 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)
(尝试替换第三个逗号,如果失败,则在行首替换一个逗号)。