这可能是许多常见问题解答 - 而不是使用:
cat file | command
Run Code Online (Sandbox Code Playgroud)
(这被称为无用的猫),正确的方式应该是:
command < file
Run Code Online (Sandbox Code Playgroud)
在第二,"正确"的方式 - 操作系统不必产生额外的过程.
尽管知道这一点,我继续使用无用的猫有两个原因.
更美观 - 我喜欢数据仅从左到右均匀移动.而且它更容易更换cat别的东西(gzcat,echo,...),添加第二个文件或插入新的过滤器(pv,mbuffer,grep...).
我"觉得"在某些情况下可能会更快.更快,因为有2个进程,1st(cat)执行读取而第二个执行任何操作.它们可以并行运行,这意味着有时可以更快地执行.
我的逻辑是否正确(第二个原因)?
我想直接在包含匹配模式的行之后打印一行.我的版本sed不会采用以下语法(它炸弹了+1p.)这看起来像一个简单的解决方案:
sed -n '/ABC/,+1p' infile
Run Code Online (Sandbox Code Playgroud)
我认为awk做多线处理会更好,但我不知道该怎么做.
嗨,我有一个文件包含网址列表,如下所示:
文件1:
http://www.google.com
http://www.bing.com
http://www.yahoo.com
http://www.baidu.com
http://www.yandex.com
....
Run Code Online (Sandbox Code Playgroud)
我希望获得以下所有记录:http://www.yahoo.com,结果如下所示:
文件2:
http://www.baidu.com
http://www.yandex.com
....
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用grep来查找yahoo.com所使用的行号
$grep -n 'http://www.yahoo.com' file1
3 http://www.yahoo.com
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何在第3行之后获取文件.另外,我知道grep中有一个标志 - 在匹配后打印行.但是,您需要在匹配后指定所需的行数.我想知道是否有什么可以解决这个问题.喜欢:
PSEUDO CODE:
$ grep -n 'http://www.yahoo.com' -A all file1 > file2
Run Code Online (Sandbox Code Playgroud)
我知道我们可以使用我得到的行号和wc -l来获取yahoo.com之后的行数,但是感觉非常蹩脚.
期待一个方便易用的解决方案.请尽量批评我在开始时将问题复杂化,同时也欢迎使用awk和sed命令!
我正在尝试使用 awk 提取一些文本。
这是示例文件:
...
var a=2;
var x=[
0, 1;
1,0;
2,1;
3,2];
other text
//this is a comment with brackets []
Run Code Online (Sandbox Code Playgroud)
所以,当我执行以下命令时:
awk '/var/ , /;/' file
Run Code Online (Sandbox Code Playgroud)
我得到:
var a=2;
var x=[
0, 1;
Run Code Online (Sandbox Code Playgroud)
预期结果:
var a=2;
var x=[
0, 1;
1,0;
2,1;
3,2];
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,上一个命令采用第一个;并打印结果。
;如果该进程与以下正则表达式匹配,则该过程应忽略:^[\t\ ]{1,}[0-9,]{1,}.*;$
你对此有什么想法吗?
我发现我可以用来grep -A10 "search string" file.txt在文件中找到搜索字符串后显示 10 行或grep -B10 "search string" file.txt之前显示 10 行。如何设置它以显示比赛前后的所有行?
例如,我有这个文件:
This is some text.
This is some more text.
This is some text.
This is some more text.
This is some text.
This is some yet more text.
This is some text.
---
This is some more text.
This is some text.
This is some more text.
Run Code Online (Sandbox Code Playgroud)
我需要在第一次搜索中打印在“---”之前找到的所有内容,无论有多少行。
我需要在第二次搜索中,打印在“---”之后找到的所有内容,无论之后有多少行。