Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 分隔一行的Bash脚本包含^A「;_Linux_Bash_Shell - Fatal编程技术网

Linux 分隔一行的Bash脚本包含^A「;

Linux 分隔一行的Bash脚本包含^A「;,linux,bash,shell,Linux,Bash,Shell,我的文件包含一行,如 39=2^A40=1^A54=2 我想要这样 39=2,40=1,54=2 如果行在Bash脚本中包含^A``如何分隔值?使用sed,您只需用逗号替换^A分隔符即可: echo "39=2^A40=1^A54=2" | sed 's/\^A/,/g' 使用awk可以执行以下操作: echo "39=2^A40=1^A54=2" | awk 'BEGIN{FS="[\\^][A]";OFS=","}{$1=$1}1' 您可以通过以下方式使用sed: echo '39=

我的文件包含一行,如

39=2^A40=1^A54=2
我想要这样

39=2,40=1,54=2

如果行在Bash脚本中包含^A``如何分隔值?

使用sed,您只需用逗号替换
^A
分隔符即可:

echo "39=2^A40=1^A54=2" | sed 's/\^A/,/g'
使用
awk
可以执行以下操作:

echo "39=2^A40=1^A54=2" | awk 'BEGIN{FS="[\\^][A]";OFS=","}{$1=$1}1'

您可以通过以下方式使用
sed

echo '39=2^A40=1^A54=2' | sed 's/\^A/,/g'
39=2,40=1,54=2

如果
^A
s是文字字符串,其他答案应该会有所帮助。只要接受一个,我就删除这个答案。如果答案对您没有帮助,您可以尝试以下方法:

笔记 在下面的所有
^A
中,您应按以下方式键入:
Ctrl-V Ctrl-A


精神抖擞 您提到“在vim中打开”,您可以在vim中执行以下操作:

:%s/^A/,/g
与塞德
你想要实现什么?是否要删除文件中所有出现的
^A
?是否将
^A
的文字字符串
“^A”
?否,我希望用“^A”分隔所有值。我不想删除^A的所有出现。具体来说,不可打印的ASCII字符
\x01
(“标题的开始”)将在vi中显示为
^A
,但它不是文字
^A
。尊敬的用户2266543,@BenjaminW。@Kent的意思是,linux中的文件有时会显示
^A
^M
^I
等字符,但它们并不表示插入符号和字母的组合,而是控制字符的组合。如果键入命令
文件名
它将返回什么。如果它表示“ASCII文件”,则您是安全的,如果它表示其他内容,则表示插入符号。
sed 's/^A/,/g' file
echo 39=2^A40=1^A54=2 | awk '{sub(/\^A40=1\^A/,",40=1,")}1'
39=2,40=1,54=2