我正在编写一个使用此文件的 bash 脚本:
Chicago
Indianapolis
Denver
Miami
并将其变成这样:
[
'chicago',
'indianapolis',
'denver',
'miami',
]
问题是这是一个 JavaScript 数组,我需要删除最后一行的最后一个逗号。我尝试跟踪最后一行并将其替换为 sed,如下所示:
lastline=1
echo [ > cities_array.txt
while IFS=$'\n' read -r line || [[ -n "$line" ]]; do
city=$(echo $line | sed -e 's/\([A-Z]\)/\l\1/')
echo ' '$city',' >> cities_array.txt
let lastline++
done < cities.txt
echo ] >> cities_array.txt
sed -e "$lastline"'s/,//' cities_array.txt > cities_array.txt
最后一行绝对不会向文件写入任何内容,从而删除所有内容。我也尝试过:
sed -e '"$lastline"s/,//' cities_array.txt > cities_array.txt
sed -e '$lastlines/,//' cities_array.txt > cities_array.txt
这些都不起作用。我该怎么做?
最佳答案
问题是当你写:
sed ... file > file
bash 解释 > 文件
并在 sed
启动之前清空该文件。
你可以使用
sed -i ... file
“就地”进行编辑
顺便说一下,你可以让整个事情变得更简单:
{
echo -n '['
while read -r line && [[ -n "$line" ]]; do echo "'${line,,}'"; done | paste -sd,
echo ']'
} < cities.txt > cities_array.txt
尽管这会产生一长行,而不是每行一个城市(不过,与 javascript 相同。)
关于javascript - 如何替换最后出现的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17534262/