sed - 比较文本和 csv 文件的内容

标签 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; exit 0)

感谢您的帮助

最佳答案

稍微调整你的脚本。

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

注释

  • “dot”不是有效的标识符(即变量名)字符:有效的是字母、数字和下划线,且第一个字符不能是数字。
  • 如果您正在执行head -1,则无需将其通过管道传输到tail -1
  • 我认为 [[test 更具可读性,主要是因为 [[ 强制您拥有 ]]
  • 括号启动一个子 shell,这对于 echo 语句来说是多余的。
    • 退出只会退出子 shell,而不是您的程序
    • 如果有多个语句,请使用 if ...;然后 ...; fi——它更具可读性。

关于sed - 比较文本和 csv 文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22360273/

相关文章:

bash - sed:如果与模式匹配,则打印分隔的行 block

bash - 如何替换 Bash shell 中的点?

command-line - 命令行差异实用程序

python - 当一个文件结束时如何停止 diff?

bash - 使用 sed 处理 html 数据

bash - sed:删除除最后 n 个字符之外的所有字符

bash - 在 bash 中转义斜杠 (awk)

Linux shell 脚本 : Pass variable from stdin to awk

使用 awk 对输出进行排序并格式化

language-agnostic - 关系数据库中的"Diffing"对象