小编αғs*_*нιη的帖子

彩色 grep 输出:不是 GREP_OPTIONS 不是别名

我想要grep.

.... 但

  • 策略 1:GREP_OPTIONS。但这已被弃用。请参阅http://www.gnu.org/software/grep/manual/html_node/Environment-Variables.html
  • 策略 2: GREP_COLORS 乍一看似乎是一个解决方案,但实际上却有所不同。
  • 策略三:别名。这不适用于find ... | xargs grep,因为 xargs 不评估别名。
  • 策略 4:编写一个简单的包装器脚本。不,我认为这太脏了,而且比解决的麻烦还多。
  • 策略五:修补源代码
  • 策略 6:联系 grep 开发人员,要求更换 GREP_OPTIONS
  • 策略 NICE-and-EASY:...这是缺失的。我没有线索。

如何解决这个问题?

grep colors

12
推荐指数
2
解决办法
2181
查看次数

确定标签 '\t' 在一行上的长度

在文本处理字段中,有没有办法知道制表符的长度是 8 个字符(默认长度)还是更少?

例如,如果我有一个带有制表符分隔符的示例文件,并且一个字段的内容适合少于一个制表符 (?7),并且如果我之后有一个制表符,那么该制表符将只是“制表符大小 – 字段大小” '的长度。

有没有办法获得一行上标签的总长度?我不是在寻找标签的数量(即 10 个标签不应该返回 10),而是这些标签的字符长度。

对于以下输入数据(字段之间的制表符分隔且只有一个制表符):

field0  field00 field000        last-field
fld1    fld11   fld001  last-fld
fd2     fld3    last-fld
Run Code Online (Sandbox Code Playgroud)

我希望计算每行中标签的长度,所以

11
9
9
Run Code Online (Sandbox Code Playgroud)

text-processing control-characters

12
推荐指数
2
解决办法
4414
查看次数

包含两个或更多文件的目录

我想找到当前目录的子目录,该目录(即子目录)包含 2 个或更多常规文件。

我对包含少于 2 个文件的目录不感兴趣,也不对只包含子目录的目录感兴趣。

find files

12
推荐指数
3
解决办法
3074
查看次数

只读 TMOUT 变量 - 在没有活动时禁用自动退出 shell 的解决方法

我们这里有一个只读的 Bash 变量。我不允许取消设置该变量。

$ echo $TMOUT
1800
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我写了这些行(我的会话不会退出)

#!/usr/bin/perl

$|++;
while (1) { print "\e[0n"; sleep 120; }
Run Code Online (Sandbox Code Playgroud)

CentOS7/RHEL7 存储库中是否有类似(如上面的 Perl 代码)的官方软件包 (rpm)?我不喜欢打开vim编辑器,我想要一个命令。

bash environment-variables timeout readonly

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

遇到EOF时“读取”退出1的目的是什么?

bash 手册页说明了有关read内置的以下内容:

退出状态为零,除非遇到文件尾

这最近咬了我,因为我-e设置了选项并使用以下代码:

read -rd '' json <<EOF
{
    "foo":"bar"
}
EOF
Run Code Online (Sandbox Code Playgroud)

我只是不明白为什么在这种情况下非成功退出是可取的。在什么情况下这会有用?

shell read

11
推荐指数
2
解决办法
1137
查看次数

根据 column1 连接多行

我有一个像下面这样的文件..

abc, 12345
def, text and nos    
ghi, something else   
jkl, words and numbers

abc, 56345   
def, text and nos   
ghi, something else 
jkl, words and numbers

abc, 15475  
def, text and nos 
ghi, something else
jkl, words and numbers

abc, 123345
def, text and nos
ghi, something else  
jkl, words and numbers
Run Code Online (Sandbox Code Playgroud)

我想将其转换(加入)为:

abc, 12345, 56345, 15475, 123345
def, text and nos, text and nos,text and nos,text and nos
ghi, something else, something else, something else, something else   
jkl, …
Run Code Online (Sandbox Code Playgroud)

command-line awk text-processing merge join

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

移动目录而不修改时间戳

我想将目录从一个位置移动到另一个位置,但是当我这样做时,我可以看到时间戳已更改。有没有办法将时间戳保留为原始时间戳?

查看了手册页,mv但找不到任何现有选项。

directory timestamps mv

10
推荐指数
1
解决办法
9674
查看次数

如何将连续数字折叠到范围内?

给定一个包含唯一数字的排序输入文件(或命令输出),每行一个,我想将所有连续数字的运行折叠到范围内,这样

n
n+1
...
n+m
Run Code Online (Sandbox Code Playgroud)

变成

n,n+m
Run Code Online (Sandbox Code Playgroud)

输入样本:

2
3
9
10
11
12
24
28
29
33
Run Code Online (Sandbox Code Playgroud)

预期输出:

2,3
9,12
24
28,29
33
Run Code Online (Sandbox Code Playgroud)

awk perl text-processing numeric-data

10
推荐指数
5
解决办法
2139
查看次数

尽管语法错误,Shell 脚本仍返回 0 exit_status

考虑这个脚本:

#!/bin/sh

foo=1
if [[ ! -z $foo ]]; then
    echo abc
fi
Run Code Online (Sandbox Code Playgroud)

它使用 Bash 语法 [[ ... ]] 当我在 Ubuntu (dash) 上使用默认 shell 运行它时,它不起作用(如预期)。但是,它的返回码仍然为零。

$ ./tmp.sh
./tmp.sh: 4: ./tmp.sh: [[: not found
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

如果我不能依赖退出代码,如何在脚本中检测这种错误?

shell dash exit-status

10
推荐指数
2
解决办法
461
查看次数

带冒号破折号 ${VAR:-} 的变量

"${2:-}" 在下面的“if-then-else 示例”中是如何工作的?不知何故,我不禁想到 ${2:-} 表示第二个参数,但我很好奇数字 2 后面的冒号 (:) 和破折号 (-) 是什么意思?

  if [ "${2:-}" = "Y" ]; then
     prompt="Y/n"
     default=Y
  elif [ "${2:-}" = "N" ]; then
     prompt="y/N"
     default=N
  else
     prompt="y/n"
     default=
  fi

  read -p "$1 [$prompt] " REPLY </dev/tty
Run Code Online (Sandbox Code Playgroud)

shell variable-substitution arguments

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