簡體   English   中英

如何使用上面一行中的單詞填寫文本文件中的空格?

[英]How can I fill out blank spaces in a text file with the word from the line above?

我有一個大型報告文件(大約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  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)...

sed -r "/^ {15}/{G; s/^ {15}(.*)\n(.{15}).*/\2\1/};h" "report"

假設您需要保留間距,前兩列是前15個字符:

awk '
    NF==2 {print fill substr($0, 16); next}
    {print; fill = substr($0, 1, 15)}
'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM