如何用bash从每行的文本文件中用逗号替换最后六个空格?
我有:
$cat myfile
foo bar foo 6 1 3 23 1 20
foo bar 6 1 2 18 1 15
foo 5 5 0 15 1 21
Run Code Online (Sandbox Code Playgroud)
我想要的是:
$cat myfile
foo bar foo,6,1,3,23,1,20
foo bar,6,1,2,18,1,15
foo,5,5,0,15,1,21
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!谢谢!
看起来规则可能是在逗号的数字前替换任何空格:
sed 's/ \([0-9]\)/,\1/g' file
Run Code Online (Sandbox Code Playgroud)
或者,按照您的规范(替换最后六个空格),您可以选择以下内容:
awk '{for(i=1; i<=NF; ++i)printf "%s%s", $i, (i<NF-6?FS:(i<NF?",":RS))}' file
Run Code Online (Sandbox Code Playgroud)
这循环遍历输入中的字段,打印每个字段后跟空格(FS),逗号或换行符(RS),具体取决于它与行尾的距离.