给出以下格式的标识符列表:
test_one another_one lol heres1 wow_the_last
我正在尝试使用sed将其替换为以下任何一种:
test_one,another_one,lol,heres1
test_one, another_one, lol, heres1
{test_one, another_one, lol, heres1}
{test_one,another_one,lol,heres1}
我可以使用以下sed命令执行此操作:
sed -e 's/\(\w*\)\s/\1,/g'
但是我希望找到一个更强大的解决方案,它不依赖于列表中没有尾随空格的最后一个单词。相反,我试图让比赛基于不在线的末尾或者跟随另一个词。但是我在这个方向上的尝试要么与任何东西不匹配,要么匹配太多。
sed -e 's/\(\w*\)^$/\1,/g'
sed -e 's/\(\w*\)[^$]/\1,/g'
我尝试了上述内容,但第一个似乎与任何内容都不匹配,下面的内容产生以下内容:
test_one,another_one,lol,heres,
答案 0 :(得分:1)
我不确定我是否正确理解你但使用awk:
$ awk 'BEGIN{OFS=","}{$1=$1;NF--;print}' file
test_one,another_one,lol,heres1
说明:
$ awk '
BEGIN { OFS="," } # set the output field separator to a comma
{
$1=$1 # rebuild the record, ie. use the commas
NF-- # reduce field count by one
print # output
}' file