文字で終わる値のリストを含むファイルがあります。数字と文字を区別するために、各行の最後の文字の前にスペースまたはタブ文字を追加する簡単な方法はありますか?
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/
これにより、すべての末尾のスペースが削除され、各行の最後の残りの文字の前にスペースが追加されます。