Awk 将图案添加到每列的末尾

Awk 将图案添加到每列的末尾,awk,sed,Awk,Sed,假设我有一个类似于此格式的文件: "pop","hand stuff","test " "non","no way","good " 除了只有3列之外,它还有数百列。我想在每一列的末尾添加@,这样输出就 "pop@","hand stuff@","test @" "non@","no way@","good @" 如果我只有一小部分专栏,那么我就可以做到 awk -F"," vOFS=, '{print $1"@",$2"@",$3"@"}' 但是如果我有很多列,并且我不想在awk脚本中指

假设我有一个类似于此格式的文件:

"pop","hand stuff","test "
"non","no way","good "
除了只有3列之外,它还有数百列。我想在每一列的末尾添加@,这样输出就

"pop@","hand stuff@","test @"
"non@","no way@","good @"
如果我只有一小部分专栏,那么我就可以做到

awk -F"," vOFS=, '{print $1"@",$2"@",$3"@"}'

但是如果我有很多列,并且我不想在awk脚本中指定每一列,我该怎么做呢

您可以使用awk的gsub函数,如下所示

awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1' file
例如:

$ echo '"pop","hand stuff","test "' | awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1'
"pop@","hand stuff@","test @"

您可以使用awk的gsub函数,如下所示

awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1' file
例如:

$ echo '"pop","hand stuff","test "' | awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1'
"pop@","hand stuff@","test @"

您可以使用awk的gsub函数,如下所示

awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1' file
例如:

$ echo '"pop","hand stuff","test "' | awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1'
"pop@","hand stuff@","test @"

您可以使用awk的gsub函数,如下所示

awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1' file
例如:

$ echo '"pop","hand stuff","test "' | awk '{gsub(/",/, "@\",");sub(/"$/, "@\"")}1'
"pop@","hand stuff@","test @"

只要您的列不包含疯狂的数据(具体地说,
\”,
嵌入到字符串中),sed就更容易:

OSX/BSD:

sed -E 's/"(,|$)/@"\1/g' 
GNU:


只要您的列不包含疯狂的数据(具体地说,
\”,
嵌入到字符串中),sed就更容易:

OSX/BSD:

sed -E 's/"(,|$)/@"\1/g' 
GNU:


只要您的列不包含疯狂的数据(具体地说,
\”,
嵌入到字符串中),sed就更容易:

OSX/BSD:

sed -E 's/"(,|$)/@"\1/g' 
GNU:


只要您的列不包含疯狂的数据(具体地说,
\”,
嵌入到字符串中),sed就更容易:

OSX/BSD:

sed -E 's/"(,|$)/@"\1/g' 
GNU:


这个awk代码片段会让你
“pop”、“hand stuff”、“test”
而不是
“pop”、“hand stuff”、“test”
只是为了记录。
对于(i=0;i
这个awk代码片段会让你
“pop”、“hand stuff”、“test”
而不是
“pop”、“hand stuff”、“test”
只是为了记录。
对于(i=0;i
那个awk片段会让你
“pop”;“hand stuff”;“test”
而不是
“pop”;“hand stuff”;“test”
只是为了记录。
对于(i=0;i
那个awk片段会让你
“pop”;“hand stuff”;“test”
而不是
“pop”;“hand stuff”;“test”;“test”
仅用于记录。
用于(i=0;i