小编Cod*_*lue的帖子

Unix命令检查文件中的任何两行是否相同?

是否有 unix 命令可以检查文件中的任何两行是否相同?

例如考虑一个文件 sentences.txt

This is sentence X
This is sentence Y
This is sentence Z
This is sentence X
This is sentence A
This is sentence B
Run Code Online (Sandbox Code Playgroud)

我们看到这句话

This is sentence X
Run Code Online (Sandbox Code Playgroud)

重复。

是否有任何命令可以快速检测到这一点,以便我可以像这样执行它 -

$ cat sentences.txt | thecommand
Line 1:This is sentence X
Line 4:This is sentence X
Run Code Online (Sandbox Code Playgroud)

search text-processing

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

为什么 'echo $0' 对两个不同的终端给出不同的结果?

我用开在Ubuntu终端Ctrl+ Alt+ T,并通过进入到一个目录,然后右击并选择“打开在终端”不同的终端。

echo $0在这两种情况下都做了。

在第一种情况下:

$ echo $0
-bash
Run Code Online (Sandbox Code Playgroud)

在第二种情况下:

$ echo $0
/bin/bash
Run Code Online (Sandbox Code Playgroud)

为什么会有这种差异?

bash ubuntu terminal gnome-terminal

17
推荐指数
3
解决办法
2万
查看次数

如何“静音” ls 命令?

假设我做一个递归 ls

$ ls -R 
Run Code Online (Sandbox Code Playgroud)

在根目录上。

我收到很多这样的消息——

ls: cannot open directory ./var/lib/sendmail: Permission denied
ls: cannot open directory ./var/lib/sudo: Permission denied
...
Run Code Online (Sandbox Code Playgroud)

有没有办法避免显示上述“ cannot open directory”消息?

ls

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

如何组合两个grep语句并一起显示它们的结果?

假设我这样做

   grep "MyVariable = False" FormA.frm

   ... result1

   grep "MyVariable = True"  FormA.frm

   ... result2
Run Code Online (Sandbox Code Playgroud)

如何编写 grep 命令以便我可以说类似的话

   grep "MyVariable = False" OR "MyVariable = True" FormA.frm
Run Code Online (Sandbox Code Playgroud)

grep

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

为什么 wc -l 告诉我这个非空文件有 0 行?

xclip/xsel是允许您将剪贴板输出通过管道传输到 Ubuntu 上的 shell 的实用程序。不幸的是,它们似乎无法与wc命令结合使用。

尝试这个。打开一个新文件并输入:

this is a line
Run Code Online (Sandbox Code Playgroud)

不按行尾的回车键

现在,复制此文本并尝试以下操作:

$ xsel -o | wc -l
0
Run Code Online (Sandbox Code Playgroud)

输出是 0,而实际上它应该是 1。保存文件(调用它myfile.txt)。

现在尝试:

$ cat myfile.txt | wc -l
1
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,输出为 1。

为什么在第一种情况下输出为 0?

text-processing newlines wc

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

使用grep求最长公共子串

我有一个名为dictionary.txt的巨大文本文件,其中包含以下条目

    ABC_SEQ_NUM This represents....
    ABC_RANK This represents....
    ABC_BSC_ID This represents...
    PQR_TA_DATE_AF This represents...
    XYZ_C_ID This represents...
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,我有一个程序的源代码,该程序使用其中一些缩写作为其变量名称的一部分。变量名经常使用上面的条目如下

     Facilitator.TMP_ABC_SEQ_NUM 
Run Code Online (Sandbox Code Playgroud)

所以我无法简单地使用 grep 搜索 TMP_ABC_SEQ_NUM,因为它不会返回任何匹配项。但是,变量名称的最后部分(“ABC_SEQ_NUM”)实际上存在于文本文件中。

所以我想说的是

      grep (longest match for) TMP_ABC_SEQ_NUM in dictionary.txt
Run Code Online (Sandbox Code Playgroud)

这样它就会返回匹配项

      ABC_SEQ_NUM
Run Code Online (Sandbox Code Playgroud)

这样的命令怎么写呢?

grep search text-processing

5
推荐指数
1
解决办法
3443
查看次数

为什么系统重启后命名管道没有被删除?

据我了解,命名管道不会写入磁盘,而是存储在内存中。这是我创建命名管道的方式 -

$ mkfifo pipe21
$ grep "simple" SimpleDoc.txt > pipe21 &
[1] 2775
$ cat pipe21
Very simple doc that contains plaintext. 
[1]+  Done                    grep --color=auto "simple" SimpleDoc.txt > pipe21
Run Code Online (Sandbox Code Playgroud)

在此之后,我重新启动了我的系统。但是,即使在重新启动后,我在当前目录中也看到了 pipe21。这是为什么?

pipe fifo

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

如何在新打开的终端中执行多个命令?

我有一个脚本,我想用它来打开新终端并在其中键入命令。像这样的命令

gnome-terminal
Run Code Online (Sandbox Code Playgroud)

打开一个新终端。

另外,如果我这样做

gnome-terminal -e myprogram1
Run Code Online (Sandbox Code Playgroud)

它将在新打开的终端中执行 myprogram1。但是,如果在 myprogram1 完成后,我想执行 myprogram2 怎么办?我不能做类似的事情

gnome-terminal -e myprogram2
Run Code Online (Sandbox Code Playgroud)

因为它会打开一个新的终端。

有没有在这我要执行这两个脚本以指定的方式myprogram1,并myprogram 2在同一个新的终端?或者我是否必须创建一个新脚本并执行类似的操作

gnome-terminal -e scriptToExecuteMyPrograms1And2
Run Code Online (Sandbox Code Playgroud)

terminal shell-script

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

是否可以创建一个任何进程都可以使用的“文件”,而无需实际将文件保存在磁盘上?

假设我做了一个grep给我很多结果的。我想使用 grep 的输出并将其传递给一个将文件名作为第一个参数的命令。例如 -

myCommand filename.txt
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情 -

grep "xyz" | myCommand
Run Code Online (Sandbox Code Playgroud)

However, since myCommand doesn't read from stdin, this piping does not work. I don't want to create a temporary file on disk with the results of grep. Is it possible by any other means to create a "file", say in memory and let myCommand use that?

shell io-redirection files arguments

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

如何使用进程替换从命令行运行 chrome?

我正在使用以下命令但没有成功 -

$ google-chrome <(grep "simple" SimpleDoc.txt)
Run Code Online (Sandbox Code Playgroud)

如果我只是做 a grep,我会得到 -

$ grep "simple" SimpleDoc.txt
Very simple doc that contains plaintext. 
Run Code Online (Sandbox Code Playgroud)

我还写了一个 python 脚本showFileContents.py来测试进程替换,它可以工作 -

#! /usr/bin/python

import sys

arg1 = sys.argv[1]
f = open(arg1)
line = f.readline()

while line:
    sys.stdout.write(line)
    line = f.readline()

f.close()
Run Code Online (Sandbox Code Playgroud)

这是输出 -

$ showFileContents.py <(grep "simple" SimpleDoc.txt)
Very simple doc that contains plaintext.
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做同样的事情时

$ google-chrome <(grep "simple" SimpleDoc.txt)
Run Code Online (Sandbox Code Playgroud)

浏览器窗口什么也没显示。使用 Firefox,我收到一条错误消息,提示“Firefox 找不到文件”。

为什么会发生这种情况以及如何使用 chrome 进行进程替换?

pipe chrome process-substitution

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

如何使用grep搜索所有子目录及其子目录中出现的单词?

可能的重复:
在文件中搜索字符串

假设我有一个名为 Home 的目录,它是我的当前目录。

在这个主目录中,我还有许多其他目录

目录 1、目录 2 等

如何在所有这些子目录(及其子目录?)

grep recursive

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