小编KLM*_*LMM的帖子

使用 find 和 sed 时如何获取文件名

我正在编写一个脚本来将 sed 应用于某些文件,然后列出已更改的文件,以便我知道哪些已被修改。

这就是我找到然后使用 sed 的方式:

find . -type f -a \( -name "*.txt" -o -name "*.git"\) -a -exec sed -i -e "s/"str1"/"str2"/g" {} +
Run Code Online (Sandbox Code Playgroud)

如何打印更改文件的文件名?我想按排序顺序打印它,以便更容易阅读。

仅使用 sed 时,我们可以这样做:

sed -i 's/$pattern/$new_pattern/w changelog.txt' $filename
if [ -s changelog.txt ]; then
  # CHANGES MADE, DO SOME STUFF HERE
else
  # NO CHANGES MADE, DO SOME OTHER STUFF HERE
fi
Run Code Online (Sandbox Code Playgroud)

但是当一起使用 find 和 sed 时我该怎么做呢?我检查了手册页并尝试了很多东西,但没有任何效果。

bash sed find shell-script

6
推荐指数
1
解决办法
9534
查看次数

使用 grep 搜索精确数字

我试图在文件中查找包含一个或多个 实例的行1234,但没有其他数字(允许使用非数字字符)。任何其他数字都应导致该行不匹配。

有效示例:

  • 1234
  • 1234 xxx
  • xxx 1234
  • 1234 1234
  • 1234 xxx 1234

无效的例子:

  • 12341234
  • 12345
  • 1234xxx345
  • 1234 345
  • 1234xxx
  • xxx1234
  • 1234xxx1234

这是我用过的:

grep -E '^([^0-9]*1234)+[^0-9]*$' file.txt
Run Code Online (Sandbox Code Playgroud)

但是这个命令也输出 12341234 作为有效,我该如何防止?

grep

5
推荐指数
2
解决办法
1095
查看次数

标签 统计

bash ×1

find ×1

grep ×1

sed ×1

shell-script ×1