小编mtk*_*mtk的帖子

文本处理 - 用逗号连接每两行

我在一个文件中有 1000 多行。文件开始如下(添加行号):

Station Name
Station Code
A N DEV NAGAR
ACND
ABHAIPUR
AHA
ABOHAR
ABS
ABU ROAD
ABR
Run Code Online (Sandbox Code Playgroud)

我需要将它转换为一个文件,通过每两行加入逗号分隔的条目。最终数据应如下所示

Station Name,Station Code
A N DEV NAGAR,ACND
ABHAIPUR,AHA
ABOHAR,ABS
ABU ROAD,ABR
...
Run Code Online (Sandbox Code Playgroud)

我正在尝试的是 - 尝试编写一个 shell 脚本,然后在echo它们之间使用逗号。但我想一个更简单有效的单线可以在sed/ 中完成这里的工作awk

有任何想法吗?

text-processing paste

42
推荐指数
3
解决办法
5万
查看次数

列出文本中包含特定单词的文件

我想递归且唯一地列出包含给定单词的文件。

示例:检查单词“check”,我通常做的是一个 grep

$ grep check * -R
Run Code Online (Sandbox Code Playgroud)

但是由于这个词出现的次数很多,我得到了很多输出。所以我只需要列出包含给定搜索词的文件名。我猜有些招用findxargs会在这里就够了,但不知道。

有任何想法吗?

grep find file-search

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

如何设置bash显示在退出后不显示vim文本?

我的问题很简单,但我发现很难轻松地构建/解释它。

我用不同的帐户登录了几个 Unix 机器。我看到2个不同的东西user1user2,而在vim编辑文本文件

用户 1

当我输入时vim filename,vim 打开并编辑文件。当我关闭它时,文件中的完整文本消失了,我看到了之前存在的终端命令/输出。

用户 2

当我输入时vim filename,vim 打开并编辑文件。当我关闭它时,我在显示器上的文件部分vim仍然显示在显示器上,并且所有以前的终端显示都向上滚动。即使文件只有 1 行,在退出 vim 后,显示屏也会显示第一行,其余全部是~,我会在屏幕底部看到命令提示符。

细节

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Jun 12 2009 07:08:36)
Run Code Online (Sandbox Code Playgroud)

我比较了vimrc两个用户的文件,我知道所有设置,但没有找到与此行为相关的任何设置/配置。

这种行为是否与 shell 配置有关?如何设置事物,以便获得user1场景中所示的行为?

我无法轻松描述这一点,也很难用谷歌搜索,因为我不知道用什么关键字来寻找这种行为。让我知道,如果我应该进一步详细说明。

vim terminal display

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

无论如何在vim中按百分比导航?

我经常打开大文件,通过日志查找信息。由于在我的情况下所有行都有时间戳,并且我确定信息存在于整个文件的哪个部分是我感兴趣的。例如,

  • 在文件内容的下半部分(50% 或以上)或
  • 接近文件末尾时增加约 10% 或
  • 向下滚动原始文件的 20% 以上。

因此,要以这种方式快速导航,即按百分比进行导航 - 中是否有任何现有功能可用vim

vim

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

vim 搜索包含特定位数的数字

我需要在一个大文档中找到特定的长度数字。我尝试为此使用正则表达式。例如,如果我需要搜索正好为 2 位的数字,我会使用\d\d(即 /d 两次后跟一个空格)。这很好用。

但是要找到 10 位数字,输入\d10 次实际上并不可行。

试过\d{2},说' E486:找不到模式:\d{2} '

有没有更快/更容易的方法来实现这一目标?

vim search regular-expression

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

什么叫`--`?

最近我知道--那是双连字符,它用于告诉命令选项列表已经结束,后面的内容不应被视为选项。所以,

grep --  'search_word' *
Run Code Online (Sandbox Code Playgroud)

将搜索给定的search_word. 但是,如果您删除--并且有一个以 开头的文件,您可能会看到意外行为-,这将打开与filename 中的字符匹配的选项。

这叫什么--?这有什么技术术语吗?

options command

26
推荐指数
2
解决办法
2558
查看次数

仅在逗号分隔的文件中删除引号之间的逗号

我有一个用逗号 ( ,)分隔的输入文件。有一些用双引号括起来的字段中包含逗号。这是示例行

123,"ABC, DEV 23",345,534.202,NAME
Run Code Online (Sandbox Code Playgroud)

我需要删除双引号和双引号内出现的所有逗号。所以上面的行应该被解析为如下所示

123,ABC DEV 23,345,534.202,NAME
Run Code Online (Sandbox Code Playgroud)

我尝试了以下使用sed但没有给出预期的结果。

sed -e 's/\(".*\),\(".*\)/\1 \2/g'
Run Code Online (Sandbox Code Playgroud)

任何快速的运用了sedawk或者任何其他Unix工具吗?

sed awk text-processing csv

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

命令显示文件的前几行和最后几行

我有一个包含多行的文件,每一行的开头都有一个时间戳,例如

[Thread-3] (21/09/12 06:17:38:672) logged message from code.....
Run Code Online (Sandbox Code Playgroud)

所以,我经常从这个日志文件中检查两件事。

  1. 还给出了具有全局条件和开始时间的前几行。
  2. 最后几行,有退出状态和一些其他信息。

是否有任何快速方便的单个命令可以让我只显示文件的前几行和最后几行?

logs tail text-processing cat head

25
推荐指数
4
解决办法
6万
查看次数

vimdiff 禁用/启用颜色编码

有什么方法可以快速禁用/启用颜色编码vimdiff?问题是,我有彩色文本vim并且文本是不可见的,因为文本颜色是红色,并且vimdiff太试图将背景颜色设置为红色,使其难以阅读。

所以,我想暂时禁用颜色编码,以验证文本并稍后重新启用它。任何快速,简单的方法来做到这一点?

colors vimdiff

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

如何在shell脚本中输入“密码”之类的?

可能的重复:
如何隐藏在 Linux shell 中键入的命令?
在 Bash 脚本中读取密码而不显示在屏幕上

我想将密码作为输入,但我希望用户能够像其他实用程序处理它一样输入它,即字符不会出现在屏幕上。我试着搜索这个,但没有找到确切的答案。

我需要接收一个变量,然后我会将输入与来自脚本开头的配置文件之一的预定义独立密码硬编码变量相匹配。

预期行为

$./startScript
username: mtk
password: ********
Run Code Online (Sandbox Code Playgroud)

*显示为占位符。我需要这部分不可见。当前,密码在用户键入时显示。

这该怎么做?

password shell-script user-input

19
推荐指数
3
解决办法
6万
查看次数