문자로 끝나는 값 목록이 포함된 파일이 있습니다. 숫자와 문자를 구분하기 위해 각 줄의 마지막 문자 앞에 공백이나 탭 문자를 추가하는 쉬운 방법이 있습니까?
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/
이렇게 하면 모든 후행 공백이 제거되고 각 줄의 마지막 남은 문자 앞에 공백이 추가됩니다.