Powershell 如何用上行中的单词填写文本文件中的空格?
我有一个大的报告文件(大约20MB),看起来像这样:Powershell 如何用上行中的单词填写文本文件中的空格?,powershell,sed,grep,Powershell,Sed,Grep,我有一个大的报告文件(大约20MB),看起来像这样: 586 700006207 8,622.09 896 9,882.82 896 777 68607099 900.00 896 587 800006207 7,059.22 896 959.02 896 697.87
586 700006207 8,622.09 896
9,882.82 896
777 68607099 900.00 896
587 800006207 7,059.22 896
959.02 896
697.87 896
7 280667985 .00 899
如果值与上一行相同,则第1列和第2列为空白。我需要一个grep/sed/powershell一行程序的帮助来填充空白,这样看起来像这样:
586 700006207 8,622.09 896
586 700006207 9,882.82 896
777 68607099 900.00 896
587 800006207 7,059.22 896
587 800006207 959.02 896
587 800006207 697.87 896
7 280667985 .00 899
谢谢。这可能适合您:
sed ':a;$!N;/^\(\( [0-9]\+ *[0-9]\+\).*\n\)\( \{15\}\)/{s//\1\2/;ta};P;D' file
根据您提供的数据,行始终以空格开头。如果情况并非如此,则:
sed ':a;$!N;/^\(\([0-9]\+ *[0-9]\+\).*\n\)\( \{14\}\)/{s//\1\2/;ta};P;D' file
假设没有空行,列间分隔符是空格,下面的工作(在Ubuntu/bash shell中测试,使用GNU sed)
假设需要保持间距,且前2列为前15个字符:
awk '
NF==2 {print fill substr($0, 16); next}
{print; fill = substr($0, 1, 15)}
'
第一行很好!!!我在windows xp上运行gnu unix工具,所以我不得不使用双引号。谢谢。thx glenn,我没有办法测试它,因为我没有awk,但它看起来很简单。
awk '
NF==2 {print fill substr($0, 16); next}
{print; fill = substr($0, 1, 15)}
'