Unixファイルを編集するときは、viエディタから次のデータを取得します。
MGW:^FVMG107
MGW:^FVMG113
MGW:^FVMG108
MGW:^FVMG103
上記のデータは^F
コマンドでは表示できません。私もcat
そうしてみましたが、まだそのままですね。どのように削除しますか?dos2unix
sed
^F
答え1
^F
vimはそこに印刷できない文字0x06があると言いますか(Fはアルファベットの6番目の文字であり、その範囲は '^@', '^A', '^B'... '^Y', '^ ') ^[', '^\', '^]', '^^', '^_')
vim、nano、joeからグラフィカルに削除するのに問題はありません。ただし、コマンドライン方法を好む場合は、文字0x06であることを知ってsed -i 's/\x06//g' filename
それを使用して削除できます。
PS:cat -v
^ Fを削除するPolymソリューションは、ファイルに印刷できない他の文字(壊れる可能性がある)がない場合にのみ機能します。
答え2
Ángelが言ったように、^F
このinvi
またはの出力は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と2行の終わりを入力します。
alex@Smiley:/tmp|⇒ cat test
alex@Smiley:/tmp|⇒ od -c test
0000000 006 \n \n
0000003
タブ、行末などを含むエスケープされたすべての文字を印刷します。
sedを使用するには、コマンドラインで同じctrl-V、crtl-trickを使用することもできます。これにより翻訳を覚える必要はありません。