我正在尝试使用" comm"比较2个文件并保存它们之间的差异在第三个文件中,如下例所示。
if [ -e "$updated_file_name_$day$month$year.txt"];
then
comm -3 < (sort $updated_file_name".txt") < (sort $updated_file_name_$day$month$year.txt) > $updated_file_name_$day$month$year_V$i.txt
else
mv $updated_file_name".txt" $updated_file_name_$day$month$year.txt
fi
它搜索文件或文件的先前版本,如果它找到了比两个文件都要进行排序和比较,则结果将保存在第三个文件中,否则它只是将新文件保存为原始文件那个日期。
我在shell控制台上使用它作为&#34; bash -c&#39; comm -3 [其余命令]&#34;并且它有效,但无论出于何种原因它都不能处理我的脚本,我总是得到错误的语法错误。
我也尝试使用&#34; diff而不是&#34; comm&#34;但我也一样,我不知道问题是什么。
以下是错误消息:
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `diff < (sort $updated_file_name".txt") < (sort $updated_file_name"_"$day$month$year.txt) > $updated_file_name"_"$day$month$year_V$i".txt"'
答案 0 :(得分:3)
这里要解决的事情很多,
<()
,进程替换是bash
功能,您可能需要使用适当的she-bang设置运行它,即#!/bin/bash
或依赖于您的发行版,bash
已安装comm -3 <(sort $updated_file_name".txt") <(sort $updated_file_name_$day$month$year.txt)
是正确的方法。另一个OP的问题是sort
无法打开文件,在此期间收到错误。
建议,在{}
comm -3 <(sort ${updated_file_name}".txt") <(sort ${updated_file_name}_${day}${month}${year}".txt")