假设我有两个bash历史记录文件,如下所示:
history1.txt:
我知道我可以很容易地编写一个bash脚本来合并这两个文件,使得结果文件包含1到1153行的历史记录条目而不重复... 就像下面的bash脚本一样:
1 ls
2 cd foo
...
921 history > history1.txt
history2.txt:
154 vim /etc/nginx/nginx.conf
155 service nginx restart
...
1153 history > history2.txt
我知道我可以很容易地编写一个bash脚本来合并这两个文件,使得结果文件包含1到1153行的历史记录条目而不重复... 就像下面的bash脚本一样:
merge.sh
HEAD=`head -n 1 history2.txt | sed -e 's/^[[:space:]]*//'`
sed -n -e "1,/$HEAD/p" history1.txt > merged.txt
sed -e "1,$ s/$HEAD//" -e '/^\s*$/d' history2.txt >> merged.txt
但我花费了比我愿意承认的更多时间,尝试仅使用无名管道、sed 或任何其他常见的 Linux 工具而不使用变量和命令替换(`command`)来完成这个任务。但是我没有成功 :(
有没有 Linux shell 大牛或 sed 大师知道这是否可能?
注意:我知道 merge.sh 脚本不能处理所有边缘情况。