所以我想grep -ril
在一个文件夹中做。我希望它只返回匹配的顶级文件夹。
为了显示:
/tmp/: grep -ril "hello"
返回:
tmp1/banan/file
tmp1/banan2/file
tmp2/ape/file
tmp2/ape2/file
Run Code Online (Sandbox Code Playgroud)
预期结果:
tmp1
tmp2
Run Code Online (Sandbox Code Playgroud) 我知道使用tail -c +N
,但它非常慢,并且固定了一个 CPU 核心:
leijurvs-MacBook-Pro:Downloads leijurv$ time cat /dev/zero | head -c 100000000 | shasum -a 256
a993f8c574e0fea8c1cdcbcd9408d9e2e107ee6e4d120edcfa11decd53fa0cae -
cat /dev/zero 0.00s user 0.02s system 4% cpu 0.471 total
head -c 100000000 0.01s user 0.03s system 9% cpu 0.470 total
shasum -a 256 0.45s user 0.02s system 99% cpu 0.469 total
leijurvs-MacBook-Pro:Downloads leijurv$ time cat /dev/zero | head -c 100000000 | tail -c +2 | shasum -a 256
f4be792b71a024a60d77b3ac4c1c2b88ac51480fa25f88d10865827f8c086506 -
cat /dev/zero 0.01s user 0.03s system 0% …
Run Code Online (Sandbox Code Playgroud) 给定一个包含多行的文件,其中一些=
在最后。
我希望加入以下一行结尾的每一=
行。任何其他换行符都应保持不变。
我一直无法做到这一点,因为sed
似乎是逐行操作的,因此总是“添加”一个换行符。
示例输入:
Apple
Banana milkshake
Cherry =
Pie
Run Code Online (Sandbox Code Playgroud)
应该变成:
Apple
Banana milkshake
Cherry Pie
Run Code Online (Sandbox Code Playgroud)
我完全愿意使用sed
/以外的工具awk
。
I have non-standard data, which I'd like to standardise
file:
d101 11001
e101 9665
f101 9663
d102 11002
e102 11003
f102 11004
g102 11005
Run Code Online (Sandbox Code Playgroud)
desired output:
d101 11001
e101 12001
f101 12002
d102 11002
e102 11003
f102 11004
g102 11005
Run Code Online (Sandbox Code Playgroud)
so the logic should be, if length of column2 = 4 it should replace it with incremental numbering of a provided series: in this case 1200 is series, & 1, 2, 3 .. are increments.
在我求助于编写 Python 来执行此操作之前,bash 中必须有一种使用 find 或类似工具的方法。我想搜索一棵树,并找到名称与某个模式匹配的所有文件,这些文件位于与另一个模式匹配的目录中。例如:foo_[0-9][0-9]
在名为 的目录中命名的所有文件bar_[0-9]
。所以,我希望找到所有这些文件(从当前目录):
a/b/bar_4/foo_02
b/bar_0/foo_03
a/b/c/d/bar_8/foo_88
Run Code Online (Sandbox Code Playgroud)
谢谢。
这行代码就是这样做的,只是我希望它从第一个字符而不是第 7 个字符开始。
$ echo 1234567890abcdefghijklmnopqrstuvwxy | sed 's/.\{1,7\}\(.\{0,1\}\)/\1/g'
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是
19gow
Run Code Online (Sandbox Code Playgroud) 让我们说例如我有一个file.txt
包含 3 行:
hello
hello
hello
Run Code Online (Sandbox Code Playgroud)
我有一个名为line=1
的变量和一个变量 string substitute=hello1
。我想将变量描述的行中的字符串替换为line
名为 的新字符串变量substitute
。
结果更改为files.txt
:
hello1
hello
hello
Run Code Online (Sandbox Code Playgroud)
我将如何使用sed
它?或者awk
?如果这就是您的目的,只要我可以输入可以在 while 循环中更改的变量。
我遇到过符号链接指向其他符号链接的情况,导致我不得不运行多个 ls 命令来尝试跟踪基本文件的存储位置。例如,如果我想知道在 centos 上运行的 java 程序的位置,我通常从 /bin/java 开始,并且在找到实际文件的位置之前必须深入 3-4 个符号链接。
是否有一个简单的 clean 命令可以跟踪所有符号链接,直到找到一个真正的文件并给我基本文件的位置?
我想修剪少于 4 个字符的行,除非该行以#
or开头!
。
样本输入:
aa
bbb
dasasdsad
! f
#
!
# s
a
&B@*!
Run Code Online (Sandbox Code Playgroud)
输出:
dasasdsad
! f
#
!
# s
&B@*!
Run Code Online (Sandbox Code Playgroud)