2013-06-12 2 views
0

В моем файле содержится апостроф (). Я могу видеть этот символ, если файл открывается в Windows, но не может его увидеть, если файл открывается в Unix. Но я должен использовать этот файл один раз после удаления этого символа.Как заменить символ апострофа в Unix

Я не могу использовать окна для удаления символа вручную. Мои серверы Unix, поэтому мне нужно удалить символ в этот момент. Я пробовал следующее, но это не сработало.

cat HAllResponses_11004*.txt| sed 's/’/'/g;'>HAllResponses_11004_1.txt 
  1. Как определить, что характер, если этот символ не отображается.
  2. Как заменить этот символ, если этот символ не используется.

Ваши 3 Ответы мне не помогает решить эту проблему. , когда я использую значения hexa, указанные ниже.

$ эхо -e "compilin \ XE2 \ x80 \ x99 моя программа"

compilinâ моя программа

Проблема заключается в том, когда я вставить апостроф в UNIX, он появляется как ''

Pl помочь мне

+0

Пробовали ли вы, что я предложил? – Amit

ответ

0

Вы можете использовать следующие для поиска замены ' с помощью sed (обратите внимание, что вам нужно, чтобы избежать специальных символов)

$ cat a.txt 
This line don't have a ' 
This is test 

$ sed s/\'//g a.txt 
This line dont have a 
This is test 

$ sed s/\'/\"/g a.txt 
This line don"t have a " 
This is test 

Если вы хотите редактировать файл в месте , вы можете использовать следующий синтаксис (обратите внимание, что содержимое a.txt будет модифицированным после выполнения команды)

$ sed -i s/\'/\"/g a.txt 
1

Символ отличается от символа '. Чтобы увидеть, что более четко, проверять их шестнадцатеричное значение:

echo -n ’ | hexdump -C 
00000000 e2 80 99           |...| 
00000003 
echo -n \' | hexdump -C 
00000000 27            |'| 
00000001 

Теперь может быть идентифицирован по его шестнадцатеричное значение при использовании sed или аналогичных инструментов для замены его в последовательности:

echo -e "compilin\xe2\x80\x99 my program" 
compilin’ my program 
echo -e "compilin\xe2\x80\x99 my program" | sed "s|\xe2\x80\x99|'|" 
compilin' my program 

Это будет замените символ апострофа, только если он встречается в тексте. В вашем случае просто передать имя файла в качестве второго аргумента sed и вы сделали:

sed -i "s|\xe2\x80\x99|'|" HAllResponses_11004_1.txt 

или просто:

sed -i "s|’|'|" HAllResponses_11004_1.txt 
+0

Ваши 3 ответа не помогают мне решить проблему. когда я использую значения гекса, которые он дает, как показано ниже. $ эхо -e "compilin \ XE2 \ x80 \ x99 моя программа" compilinâ мою программу Проблема, когда я вставить апостроф в UNIX, то появляющийся, как '' Pl помочь мне – user2471320

1

Вы можете использовать кошачий -vet, чтобы увидеть управляющие символы в UNIX и затем используйте sed для замены этих символов. В приведенном ниже примере cat -vet показывает (') как (M-^R), который можно легко заменить с помощью sed.

Оригинал Файл: символы

My file contains an apostrophe (’). I am able to see this character if the file opens in Windows but not able to see it if the file opens in Unix. But I need to use that file once after removing that character. 
I can't use windows to remove the character manually. My servers are Unix so I need to remove the character at that point. I have tried the following but it didn't work. 

управления показаны с кошкой -vet в Unix:

/home/temp_files > cat -vet SO.txt 
My file contains an apostrophe (M-^R). I am able to see this character if the file opens in Windows but not able to see it if the file opens in Unix. But I need to use that file once after removing that character.$ 
I can't use windows to remove the character manually. My servers are Unix so I need to remove the character at that point. I have tried the following but it didn't work.$ 

Replace с СЕПГ:

/home/temp_files > cat -vet SO.txt | sed 's/M-^R//g' 
My file contains an apostrophe(). I am able to see this character if the file opens in Windows but not able to see it if the file opens in Unix. But I need to use that file once after removing that character.$ 
I can't use windows to remove the character manually. My servers are Unix so I need to remove the character at that point. I have tried the following but it didn't work.$ 
Смежные вопросы