各行の最後の文字の前にスペースまたはタブを追加します。

各行の最後の文字の前にスペースまたはタブを追加します。

文字で終わる値のリストを含むファイルがあります。数字と文字を区別するために、各行の最後の文字の前にスペースまたはタブ文字を追加する簡単な方法はありますか?

44A  
354T  
1453C  
77D

したがって、出力は次のようになります。

44 A  
354 T  
1453 C  
77 D

答え1

最後の文字の後と行末の前にスペースがない場合は、次を使用します。

sed 's/.$/ &/' file

または

perl -pe 's/.$/ $&/' file

行末の前にスペースがある場合は、次を使用します。

perl -pe 's/(.*)(\S)/$1 $2/' file

答え2

これは説明されている場合に機能します。

sed 's/\(.\)$/\ \1/' file.txt 

他の場所にスペースが欲しいと崩れます。

答え3

行が空でない場合...

perl -pe 'substr($_,-2,0)=" "'

答え4

viでは、以下を使用してこれを実行できます。

:%s/\(.\)$/ \1/

分解するとこんな感じです。

:%s    #Apply substitution to all lines
   /\(.\)$    #Search for a single character followed by the end of the line
          / \1/    #Replace with a space followed by that character

これは、行の末尾にスペースがないと仮定します。常にそうでない場合は、次を使用します。

:%s/\(\S\)\s*$/ \1/

これにより、すべての末尾のスペースが削除され、各行の最後の残りの文字の前にスペースが追加されます。

関連情報