小编Chr*_*ris的帖子

查找:名称中的正则表达式

假设我写:

find . -regex "[0-9]{4}-[0-9]{2}-[0-9]{2}-(foo|bar).csv.gz" -printf "%f\n"
Run Code Online (Sandbox Code Playgroud)

这个命令在我看来应该可以工作。我已经遍历了各种 regextype 选项和各种 regex 格式,但是我无法让这种 regex 通过 find 工作。关于查找和正则表达式解析器,我在这里有什么简单的错误吗?

find gnu

4
推荐指数
1
解决办法
1170
查看次数

Awk:路径上的脚本?

有没有awk办法在路径上放置小脚本?

例如,我有一个非常有用的整理操作:

// collate-csv.awk
FNR > 1 || NR == 1
Run Code Online (Sandbox Code Playgroud)

我可以以各种很棒的方式使用它:

xargs -a $(find * -name *.csv) awk -F',' -f collate-csv.awk | ...
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我无法从任何地方调用我的 awk 工具。使用可执行的 shell 脚本,我可以将其放入路径上的 bin 文件夹中。linux 中是否有一种机制可以让awk我在文件系统中的任何地方都可以使用这些不可执行的源文件?

(有条件的是“机制”不是“你为什么不直接用锤子打它”式的kludge)

bash path awk

3
推荐指数
1
解决办法
248
查看次数

如何在 Mac 上使用现代 coreutils?

如何在 Mac 上获取现代 coreutils?


我使用以下方法遇到了这个问题csplit

foo.txt:

foo
1
foo
2
foo
3
Run Code Online (Sandbox Code Playgroud)
$: csplit foo '^foo$' '{*}'
# error
Run Code Online (Sandbox Code Playgroud)

仔细检查Mac 上的manpage, man csplit,csplit是 FreeBSD 版本,并且不提供该'{*}'选项。事实上,我必须提前提供准确的分割次数。这要么会触发czplit我重新实现,要么我可以GNU coreutils在 mac 上登录。

有办法吗?

coreutils csplit macos

2
推荐指数
1
解决办法
983
查看次数

Awk:无需编写代码即可绕过标头

这是我经常输入的一个表达式,因为每个人都使用带头的 CSV 文件,我也必须出于我的目的传递标题:

cat foo.csv | awk -F',' 'BEGIN{start=0}{if(start==0){start = 1; print $0; next;} ...}'
Run Code Online (Sandbox Code Playgroud)

必须有一些微不足道的设置来允许标题通过,并避免创建 BASH 脚本包装器(并在我的大脑中拖曳它)或一遍又一遍地编写它。

有这样的设定吗?

shell bash awk csv

0
推荐指数
1
解决办法
287
查看次数

标签 统计

awk ×2

bash ×2

coreutils ×1

csplit ×1

csv ×1

find ×1

gnu ×1

macos ×1

path ×1

shell ×1