我有一个这样的文件
name|age
Bob|30
Tom|50
Cindy|10
Run Code Online (Sandbox Code Playgroud)
我希望第一行有一个不同的分隔符“^”。
name|age
Bob|30
Tom|50
Cindy|10
Run Code Online (Sandbox Code Playgroud)
但我不断得到
^n^a^m^e^|^a^g^e^
Bob|30
Tom|50
Cindy|10
Run Code Online (Sandbox Code Playgroud)
期望的输出是
name^age
Bob|30
Tom|50
Cindy|10
Run Code Online (Sandbox Code Playgroud)
您的代码gsub("|","^")没有|转义的特殊元字符(用于正则表达式中的交替),因此它将匹配输入中的每个位置。
您可以在awk不涉及任何正则表达式的情况下使用它:
awk 'BEGIN{FS=OFS="|"} FNR==1{OFS="^"; $1=$1; OFS=FS} 1' f
Run Code Online (Sandbox Code Playgroud)
name^age
Bob|30
Tom|50
Cindy|10
Run Code Online (Sandbox Code Playgroud)
细节:
FS="|": 设置FS为|OFS="^": 设置OFS为^$1=$1:强制 awk使用重新格式化每个字段OFS