我想读取所有txt文件的最后一个单词,如果“,”不存在,则在其后面附加“,”
我知道如何追加
for file in *.txt; do
echo ',' >> "$file"
done
但是在此代码之前需要放置 if 条件并执行此操作,仅 ',' 不在文件的最后一个后面。
例如。文本文件 abcd.txt 有以下数据你好,希望你一切都好
现在我必须检查文件末尾是否存在“,”(逗号) 这里“good”是最后一行,如果“,”不是则附加“,”
即你好,希望你一切都好,
对所有文件进行相同的检查,如果不存在则附加“,”。
请帮忙
最佳答案
正如 @Alex H. 指出的,您可以使用 tail
来检查最后一个字符。
根据测试,可以使用sed
修改该文件:
for file in *.txt; do
if [ "$(tail -c 2 "$file")" != "," ]; then
sed '$s/$/,/' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
fi
done
[ "$(tail -c 2 "$file")"!= ","]
- 测试最终字符不是,
。正如 @Yushi 在他的评论中指出的那样,文件的最后一个字符将是$
(行尾字符),因此我们需要tail -c 2
来检查该字符位于其前面。sed '$s/$/,/' "$file"
- 将,
字符添加到最后一行的末尾。> "$file.tmp"&& mv "$file.tmp""$file"
- 只需确保文件被修改并保存为其原始名称。
如果在 GNU/Linux 上,您可以使用更短的 sed -i '$s/$/,/' "$file"
来完成同样的事情。 -i
是 GNU sed
选项,用于通过创建临时文件来替换原始文件(在后台)“就地”修改文件。
关于shell - 如何读取文件的最后一个字并附加 ","(如果不存在)。 UNIX系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26009555/