添加“;” (分号)位于小时和文件名之间的每个空格中

添加“;” (分号)位于小时和文件名之间的每个空格中

这里有一份清单,如下:

07:41 0840228.32P379995.de472.netzwerk.com.br,S=307582,W=311813:2,
04:11 1574312.116821186.der472.netzwerk.com.br,S=301166,W=307582:2,
06:22 1540376.98P379995.der472.netzwerk.com.br,S=311813,W=312391:2,
03:39 8712441.254782468.de472.netzwerk.com.br,S=307387,W=311615:2,
07:35 9841630.971395138.de472.netzwerk.com.br,S=303039,W=303039:2,
01:16 2369857.123688174.de472.netzwerk.com.br,S=298927,W=311615:2,
01:08 1845871.564387663.de472.netzwerk.com.br,S=304067,W=305586:2,
08:07 1236913.325890982.de472.netzwerk.com.br,S=299941,W=304067:2,
05:70 1086215.397447162.de472.netzwerk.com.br,S=306747,W=309789:2,
06:41 9513575.225890982.de472.netzwerk.com.br,S=305586,W=306747:2,
01:70 1965849.125749892.de472.netzwerk.com.br,S=313423,W=309171:2,
09:12 9564136.687415393.de472.netzwerk.com.br,S=309171,W=313423:2,

无论如何都可以添加一个“;” (分号)在小时和文件名之间的每个空格中,这样会产生如下结果吗?

07:41;0840228.32P379995.de472.netzwerk.com.br,S=307582,W=311813:2,
04:11;1574312.116821186.der472.netzwerk.com.br,S=301166,W=307582:2,
06:22;1540376.98P379995.der472.netzwerk.com.br,S=311813,W=312391:2,
03:39;8712441.254782468.de472.netzwerk.com.br,S=307387,W=311615:2,
07:35;9841630.971395138.de472.netzwerk.com.br,S=303039,W=303039:2,
01:16;2369857.123688174.de472.netzwerk.com.br,S=298927,W=311615:2,
01:08;1845871.564387663.de472.netzwerk.com.br,S=304067,W=305586:2,
08:07;1236913.325890982.de472.netzwerk.com.br,S=299941,W=304067:2,
05:70;1086215.397447162.de472.netzwerk.com.br,S=306747,W=309789:2,
06:41;9513575.225890982.de472.netzwerk.com.br,S=305586,W=306747:2,
01:70;1965849.125749892.de472.netzwerk.com.br,S=313423,W=309171:2,
09:12;9564136.687415393.de472.netzwerk.com.br,S=309171,W=313423:2,

答案1

由于列表中没有其他空格字符,因此您可以用sed分号替换每行中的第一个空格字符:

sed 's/ /;/' file

答案2

awk这可以通过或 来完成sed

awk '{print $1";"$2}' file

awk -F ' ' '{print $1,$2}' OFS=";" file

sed 's| |;|' file

第一个awk命令在第一列和第二列之间打印 a ;,第二个命令将空格分隔符转换为 a ;。该sed命令只是将空格替换为;.要使用以下命令就地编辑文件sed

sed -i 's| |;|' file

其中awk,假设版本为4.1.0或更高版本:

awk -i inplace '{print $1";"$2}' file

awk -i inplace -F ' ' '{print $1,$2}' OFS=";" filename

答案3

在电子邮件服务器上有类似的问题,只需将此列表放入file01.txt文本文件中,然后应用以下命令:

cat file01.txt | sed 's/[ \t]/;/g' > file02.txt

相关内容