Sed 比较文本文件和csv文件的内容

Sed 比较文本文件和csv文件的内容,sed,awk,diff,Sed,Awk,Diff,我需要一个bash脚本示例来比较文件的第一行(Result.txt)和另一个文件(table.csv)的第一行和第一列,然后将结果发送到html文件 我在编码方面非常基础,这是我到目前为止发现的: #!/bin/sh Result.txt="$(head -n 1 < $1|tail -n 1)" table.csv="$(head -n 1 < $2|tail -n 1)" test "$R.txt" = "$sheet.csv" && (echo The same

我需要一个bash脚本示例来比较文件的第一行(Result.txt)和另一个文件(table.csv)的第一行和第一列,然后将结果发送到html文件

我在编码方面非常基础,这是我到目前为止发现的:

#!/bin/sh
Result.txt="$(head -n 1 < $1|tail -n 1)"
table.csv="$(head -n 1 < $2|tail -n 1)"
test "$R.txt" = "$sheet.csv" && (echo The same; exit 0)
#/垃圾箱/垃圾箱
Result.txt=“$(head-n1<$1 | tail-n1)”
表.csv=“$(头部-n1<$2 |尾部-n1)”
测试“$R.txt”=“$sheet.csv”&&&(回显相同;退出0)

感谢您的帮助

稍微调整一下脚本

#!/bin/bash
Res=$(head -n 1 "$1")
tab=$(head -n 1 "$2")
[[ $Res == $tab ]] && echo The same
注释

  • “点”不是有效的标识符(即变量名)字符:有效的是字母、数字和下划线,第一个字符不能是数字
  • 如果您正在执行
    head-1
    ,则无需将其导入
    tail-1
  • 我认为
    [[
    测试更具可读性,主要是因为
    [[
    迫使你拥有
    ]
  • 括号启动了一个子shell,这对于echo语句来说是多余的。
    • 退出只会退出子shell,而不会退出您的程序
    • 如果您有多条语句,请使用
      if…;then…;fi
      ——这样可读性更好

即使您的shell允许您在变量名中包含“.”字符,这也不是一个好主意。
Result=“…”
要简单得多。您的意思是代码的最后一行使用了
Result.txt
变量,而不仅仅是
R.txt
。对吗?
“$R.txt”
将始终为空。您还需要为html文件的外观提供某种形式的说明。请阅读有关awk的
printf
语句。祝您好运。