Unix 파일을 편집할 때 vi 편집기에서 다음 데이터를 얻습니다.
MGW:^FVMG107
MGW:^FVMG113
MGW:^FVMG108
MGW:^FVMG103
위 데이터는 ^F
명령에서 볼 수 없습니다. 저도 cat
그렇게 해봤는데 여전히 그대로네요. 어떻게 삭제해?dos2unix
sed
^F
답변1
^F
vim은 거기에 인쇄할 수 없는 문자 0x06이 있다고 말합니까(F는 알파벳의 여섯 번째 문자이며 해당 범위는 '^@', '^A', '^B'... '^Y', '^ ') ^[', '^\', '^]', '^^', '^_')
vim, nano, joe에서 그래픽으로 제거하는 데 문제가 없습니다. 하지만 명령줄 방법을 선호한다면 문자 0x06이라는 것을 알고 sed -i 's/\x06//g' filename
이를 사용하여 제거할 수 있습니다.
추신: cat -v
^F를 제거하는 Polym 솔루션은 파일에 인쇄할 수 없는 다른 문자(깨질 수 있음)가 없는 경우에만 작동합니다.
답변2
Ángel이 말했듯 ^F
이 in vi
또는 의 출력은 cat -v
06자를 나타냅니다. 이러한 문자를 제거하는 또 다른 방법은 다음과 같습니다.
tr -d "\06" < oldfile > newfile
답변3
편집 : 같이천사위에서 언급한 것처럼 이 솔루션을 사용하면 원치 않는 변경이 발생할 수 있으므로 사용해서는 안 됩니다.
그의 솔루션(hex( ^F
)== \x06
):
sed -i 's/\x06//g' filename
내 (잘못된) 해결책:
cat -v oldfile | sed 's/\^F//g' > newfile
그것은 이루어져야합니다.
답변4
vim에서 파일 작업을 하고 있으므로 vi/vim에서도 이 문제를 수정할 수 있습니다. ctrl-v를 누른 다음 ctrl-를 눌러 이러한 문자를 입력할 수 있습니다. 이렇게 하려면 crtl-v를 누른 다음 ctrl-f를 누르십시오.
따라서 간단한 찾기/바꾸기를 사용할 수 있습니다.
:%s/^F//
이는 모든 행(%)에 적용되며 (s)의 첫 번째 인스턴스인 ^F를 아무것도 대체하지 않고 대체하여 효과적으로 삭제합니다.
cat 대신 파일에 숨겨진 문자를 보려면 od -c를 사용해 보십시오.
od -c <file name>
예를 들어 파일에 ^F와 두 개의 줄 끝을 입력합니다.
alex@Smiley:/tmp|⇒ cat test
alex@Smiley:/tmp|⇒ od -c test
0000000 006 \n \n
0000003
탭, 줄 끝 등을 포함하여 이스케이프된 모든 문자를 인쇄합니다.
sed를 사용하려면 명령줄에서 동일한 ctrl-V, crtl-trick를 사용할 수도 있습니다. 이렇게 하면 번역을 기억할 필요가 없습니다.