我想阅读所有txt文件的最后一个单词,如果不存在“,”,请在其末尾附加“,”
我知道如何追加
for file in *.txt; do
echo ',' >> "$file"
done
但是在此代码之前需要插入条件并仅执行','不在文件的最后。
例如。文本文件abcd.txt具有以下数据
hello how are you hope you are good
现在我必须检查文件名“,”(逗号)是否出现在文件末尾,“ good”是最后一行,如果“,”不附加“,”
IE hello how are you hope you are 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
是GNUsed
选项,可通过创建一个临时文件来替换原始文件(在后台)来修改文件“就地”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句