Linuxのテキストファイル内のすべての制御文字CTRL + A(SOH/ascii 1)を置き換える必要があります。これはSEDでどのように実現できますか?
これはcat
を通じて-v
(同等の--show-nonprinting
オプションとこれをsed
にパイプします。
制御文字が見出しの開始(SOH)文字(CTRL + A/ASCII 1))であり、それをタブで置き換える場合は、次のようにします。
cat -v file | sed 's/\^A/\t/g' > out
cat -v
は、SOH文字を^ Aに置き換えます。^ Aは、sed
で照合されて置き換えられます。
試してください:
sed 's/^A/foo/g' file
使用する Ctrl+V+A 上記のコマンドで^A
シーケンスを作成します。
「置換」とは、ファイルを「インプレース」で変更することを想定しています。
GNU sedを使用:
# Create a file with a single control character (SOH)
echo -e "\x01" > file
# Change SOH control characters to the literal string "SOH"
sed -i 's/\x01/SOH/g' file
# Check result
cat file
与える...
SOH
-i
オプションはOS X sedでは機能しないため、sedを一時ファイルにパイピングすることで回避する必要があります。
何に置き換えますか?置換が1文字の場合は、tr
よりもsed
の方が適しています。文字「a」で置き換えるには:
tr '\1' a < input-file > tmp && mv tmp input-file
Trコマンドを使用できます
tr -s '\ 001' '|'新しいファイル
tr -s "Wordまたはdelimiter"を "Wordまたはdelimiter" newfileに置き換えたい