我正在尝试使用 nawk 将数据列转换为行
input=
1775
1800
1825
200
2850
3050
3075
3175
我的代码是:
nawk 'BEGIN{ORS=","}{print $0}'
但输出不包括我的输入文件中的所有数据集。 谁能帮我解决这个问题...?
输出:
,2850,3050,3075,3175,
你可以这样做
nawk '{$1=$1}1' RS= OFS=, file > newfile
这将修剪字符串并用逗号替换所有换行符。
查看在线演示:
input="
1775
1800
1825
200
2850
3050
3075
3175"
nawk '{$1=$1}1' RS= OFS=, <<< "$input"
输出:
1775,1800,1825,200,2850,3050,3075,3175
您可以尝试以下吗?
awk -v OFS="," '
{
gsub(/\r/,"")
val=(val?val OFS:"")$0
}
END{
print val
}
' Input_file
通过查看 OP 的尝试,看起来 OP 可能在 Sun o.s Solaris 系统上,如果是这种情况,请将
awk
更改为 nawk
说明:
将
OFS
设置为 ,以获取逗号分隔值的输出。创建名为 val 的变量,其值每次都用逗号连接起来。在此代码的 END 部分打印变量 val 以根据 OP 要求将所有行以逗号分隔。
未在 Sun 操作系统上进行测试,如果您在那里有粘贴命令,请尝试
tr -d '\r' < Input_file > temp && mv temp Input_file;paste -sd',' Input_file
input="
1775
1800
1825
200
2850
3050
3075
3175"
echo "$input" | paste -sd, -
输出:
,1775,1800,1825,200,2850,3050,3075,3175
编辑: 要摆脱领先的昏迷,您可以使用 sed
echo "$input" | paste -sd, - | sed 's/^,//'