Awk 更改第一行上的输出字段分隔符

Awk 更改第一行上的输出字段分隔符,awk,Awk,我有一个这样的文件 name|age Bob|30 Tom|50 Cindy|10 我希望第一行有一个不同的分隔符,^ awk'NR==1{gsub|,^1}1'f 但我一直在 ^n^a^m^e^|^a^g^e^ Bob|30 Tom|50 Cindy|10 期望输出为 name^age Bob|30 Tom|50 Cindy|10 像这样: awk -F'|' 'NR==1{print $1,$2;next}1' OFS='^' file 或者是回应和我的混合: awk -F'|' '

我有一个这样的文件

name|age
Bob|30
Tom|50
Cindy|10
我希望第一行有一个不同的分隔符,^

awk'NR==1{gsub|,^1}1'f 但我一直在

^n^a^m^e^|^a^g^e^
Bob|30
Tom|50
Cindy|10
期望输出为

name^age
Bob|30
Tom|50
Cindy|10
像这样:

awk -F'|' 'NR==1{print $1,$2;next}1' OFS='^' file
或者是回应和我的混合:

awk -F'|' 'NR==1{$1=$1}1' OFS='^' file
像这样:

awk -F'|' 'NR==1{print $1,$2;next}1' OFS='^' file
或者是回应和我的混合:

awk -F'|' 'NR==1{$1=$1}1' OFS='^' file

你能试试下面的吗

awk 'FNR==1{sub(/\|/,"^")} 1' Input_file
如果需要更改多次出现的情况,请使用gsub代替sub

awk 'FNR==1{gsub(/\|/,"^")} 1' Input_file

你能试试下面的吗

awk 'FNR==1{sub(/\|/,"^")} 1' Input_file
如果需要更改多次出现的情况,请使用gsub代替sub

awk 'FNR==1{gsub(/\|/,"^")} 1' Input_file
带有gsub |,^的代码在regex转义中没有用于替换的特殊元字符|,因此它将匹配输入中的每个位置

您可以在不涉及任何正则表达式的情况下使用此awk:

awk 'BEGIN{FS=OFS="|"} FNR==1{OFS="^"; $1=$1; OFS=FS} 1' f
详情:

FS=|:将FS设置为| OFS=^:OFS集合为^ $1=$1:强制awk使用OFS重新格式化每个字段 带有gsub |,^的代码在regex转义中没有用于替换的特殊元字符|,因此它将匹配输入中的每个位置

您可以在不涉及任何正则表达式的情况下使用此awk:

awk 'BEGIN{FS=OFS="|"} FNR==1{OFS="^"; $1=$1; OFS=FS} 1' f
详情:

FS=|:将FS设置为| OFS=^:OFS集合为^ $1=$1:强制awk使用OFS重新格式化每个字段 您还可以使用sed:

命令的1个地址,即此处的第一行 |不是特别的,因为默认情况下sed使用BRE,请参阅BRE与ERE的区别 如果可以有多个匹配项,请使用s/|/^/g 您还可以使用sed:

命令的1个地址,即此处的第一行 |不是特别的,因为默认情况下sed使用BRE,请参阅BRE与ERE的区别 如果可以有多个匹配项,请使用s/|/^/g
awk'NR==1{gsub[|],^}1'f?ah。就这样。在这上面花了太多时间:-这能回答你的问题吗?将完整文件中的第一个|替换为^:perl-0777-pe's/\|/^/'fileawk'NR==1{gsub[|],^}1'f?ah。就这样。在这上面花了太多时间:-这能回答你的问题吗?将完整文件中的第一个|替换为^:perl-0777-pe的/\\|/^/'文件请添加g,因为一个文件中可能有多个|row@anubhava完成。。我并没有使用只有一个的示例,但最好说,请添加g,因为一个示例中可能有多个row@anubhava完成。。我并没有使用只有一个的样本,但这样说是个好主意