我想在AIX中比较2个文件并打印数字上的差异

基尔塔纳·诺亚(Kerthana Noah)

我想比较2个文件,例如file1file2,在输出中我必须打印差异以及添加和/或删除的行数。

文件1

apple1
apple2
apple3
apple4

文件2

apple1
apple2
apple3
apple4
grape1
grape2
grape3
mango4

输出应为:

No of newly added list= 4
No of lines removed =0
Difference =4 

Newely Added list 
------------

grape1
grape2
grape3
mango4

Removed list 
--------
None
案件

如果您不需要该确切的输出格式,则可以使用diffdiffstat

例如

$ diff file1 file2 | diffstat -s
 1 file changed, 4 insertions(+)

例如,如果apple4从中删除了file2,则输出将如下所示:

$ diff file1 file2 | diffstat -s
 1 file changed, 4 insertions(+), 1 deletion(-)

如果确实需要该确切输出,则可以diff在以下脚本中单独使用

#! /bin/sh

if [ ! "$#" -eq 2 ] ; then
  echo "Exactly two file arguments are required."
  exit 1
fi

f1="$1"
f2="$2"    

# sort and uniq the input files before diffing.
# if you have `mktemp`, use this:
t1=$(mktemp)
t2=$(mktemp)
# else kludge it with something like this:
# mkdir ~/tmp
# t1="~/tmp/$f1.tmp"
# t2="~/tmp/$f2.tmp"

# if your `sort` has a `-u` option for `uniq` (e.g. GNU sort), you
# can use `sort -u` instead of `sort | uniq`
sort "$f1" | uniq > "$t1"
sort "$f2" | uniq > "$t2"

add=$(diff "$t1" "$t2" | grep -c '^> ')
del=$(diff "$t1" "$t2" | grep -c '^< ')

[ -z "$add" ] && add=0
[ -z "$del" ] && del=0

diff=$(( add - del ))

cat <<__EOF__
No of newly added list= $add
No of lines removed = $del
Difference = $diff

Newly Added list 
------------
__EOF__

if [ "$add" -eq 0 ] ; then
   echo None.
else
  diff "$t1" "$t2" | sed -n -e 's/^> //p'
fi

cat <<__EOF__

Removed list 
--------
__EOF__

if [ "$del" -eq 0 ] ; then
   echo None.
else
  diff "$t1" "$t2" | sed -n -e 's/^< //p'
fi

rm -f "$t1" "$t2"

如果您grep没有-c选择,请使用diff ... | grep ... | wc -l

如果您没有内置的整数运算,可以使用bcdc或其他方式进行计算sh我想不起来没有,但商业Unix可以具有一些通用工具的真正原始和古老的实现。该脚本已经过测试,dash因此可以与任何当前的POSIX shell一起使用。

输出:

$ ./keerthana.sh file1 file2
No of newly added list = 4
No of lines removed = 0
Difference = 4

Newly Added list 
------------
grape1
grape2
grape3
mango4

Removed list 
--------
None.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 bash,我想在一行上打印一个数字,后跟 2 个路径的大小。即在一行上输出 3 个命令

来自分类Dev

我如何在单行上打印数字

来自分类Dev

比较2个列表并打印差异

来自分类Dev

Perl(比较两个文件)仅在主文件上打印出差异

来自分类Dev

我如何使用Java中的2个线程在文件中打印数据

来自分类Dev

在Python中比较2个庞大的csv文件

来自分类Dev

如何在Python中比较2个txt文件

来自分类Dev

如何在perl中比较2个csv文件

来自分类Dev

我想在此代码中打印数组元素的编号

来自分类Dev

如何比较两个json文件并打印差异报告

来自分类Dev

比较两个文件并在 Java 中打印差异

来自分类Dev

逐行比较两个日志文件并打印差异

来自分类Dev

如何用逗号将数字打印为Java中的数千个分隔符。我也想在该点后仅打印2个数字

来自分类Dev

我的ArrayList只是打印数字

来自分类Dev

比较两个文件的列并相应地打印数据

来自分类Dev

以2的幂的和以升序打印数字

来自分类Dev

在python中比较两个文件

来自分类Dev

在Linux中比较2个数字时预期输出未到

来自分类Dev

以菱形打印数字

来自分类Dev

比较2个xml文件的数据并输出差异

来自分类Dev

比较2个CSV文件并写入所有差异

来自分类Dev

Python-比较2个文件和输出差异

来自分类Dev

在Android中比较2个ImageViews

来自分类Dev

在Android中比较2个ImageViews

来自分类Dev

比较2个CSV巨大的CSV文件,并使用perl将差异打印到另一个csv文件中

来自分类Dev

如何更改我的逻辑以在jsp中打印数字?

来自分类Dev

在6列python上打印数字列表

来自分类Dev

为什么我不能在PHP中比较这些数字?

来自分类Dev

使用3个线程依次打印数字

Related 相关文章

热门标签

归档