20

Linux のテキスト ファイル内の制御文字 CTRL+A (SOH/ascii 1) をすべて置換する必要があります。SED でこれを行うにはどうすればよいですか?

4

5 に答える 5

30

試す:

sed 's/^A/foo/g' file

Ctrl+ V+を使用して、上記のコマンドでシーケンスAを作成します。^A

于 2012-11-01T15:32:32.190 に答える
21

「置換」とは、ファイルを「その場で」変更することを想定しています。

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 を一時ファイルにパイプして回避する必要があります。

于 2012-11-01T15:31:21.207 に答える
20

これは(オプションとこれを にパイプすることと同等)を使用catして行うことができます。-v--show-nonprintingsed

制御文字が見出しの開始 (SOH) 文字 (CTRL+A / ASCII 1) であり、それをタブに置き換えたい場合は、次のようにします。

cat -v file | sed 's/\^A/\t/g' > out

cat -vは SOH 文字を ^A に置き換えます。これは で一致して置き換えられsedます。

于 2012-11-09T14:53:05.447 に答える
7

それらを何に置き換えますか?置換が 1 文字の場合trは、 よりも を選択することをお勧めしsedます。文字「a」に置き換えるには:

tr '\1' a < input-file > tmp && mv tmp input-file
于 2012-11-01T16:59:41.810 に答える