标签: grep

为什么“egrep、fgrep 和 rgrep”的这些变体被弃用?

grep、egrep、fgrep、rgrep、pgrep的说明如下:

描述

grep、egrep、fgrep、rgrep、pgrep - 是类 Unix 操作系统中的命令,用于打印与模式匹配的行。grep 在指定的输入文件中搜索包含与给定模式匹配的行。默认情况下,它打印匹配的行。

此外,变体程序egrep、fgrep 和rgrep 分别与grep -E、grep -F 和grep -r 相同。这些变体已被弃用,但提供它们是为了向后兼容。

为什么egrep、fgrep 和 rgrep的这些变体已被弃用?

unix grep

0
推荐指数
1
解决办法
1094
查看次数

grep 隐藏命令的输出

我有一个像这样的命令:

bin/deploy staging --profile my_profile | grep 'UploadError'
Run Code Online (Sandbox Code Playgroud)

通常

bin/deploy staging --profile my_profile  
Run Code Online (Sandbox Code Playgroud)

打印许多日志行到控制台,但是当执行 grep 时,所有内容都会被静音。是否有一个标志可以用来取消日志输出的静音?

基本上打印出命令通常打印到控制台的内容并执行 grep。

grep 的目的是我有一些逻辑来处理部署期间的上传错误。我想打印完整输出的原因是我想查看部署期间发生的情况而不是抑制日志。

目前,如果 grep 找不到字符串,则不会打印任何内容。如果它执行类似以下操作,则会打印:

[web] UploadError

[worker] UploadError
Run Code Online (Sandbox Code Playgroud)

如果我删除 grep 命令,类似以下内容将打印到控制台:

[web] INFO: Uploading archive to s3 location: my-app/app-27b50-
170829_133831-stage-170829_133831.zip
[web] INFO: Creating AppVersion app-27b50-170829_133831-stage-
170829_133831
[web] WARNING: Deploying a previously deployed commit.
[web] Uploading my-app/app-27b50-170829_133831-stage-
170829_133831.zip to S3. This may take a while.
[web] Upload Complete.
Run Code Online (Sandbox Code Playgroud)

所以我想做的是执行 grep,无论是否找到字符串,也将原始命令的输出打印到控制台。

bash grep

0
推荐指数
1
解决办法
1016
查看次数

为什么 uniq -c 命令在某些情况下会返回重复项?

我正在尝试grep查找另一个文件中不存在的文件中的单词

grep -v -w -i -r -f "dont_use_words.txt" "list_of_words.txt" >> inverse_match_words.txt


uniq -c -i inverse_match_words.txt | sort -nr
Run Code Online (Sandbox Code Playgroud)

但我在uniq命令中得到重复的值。为什么这样?

我想知道这是否可能是因为grep字符串之间存在差异,例如,在“GIRLAAA”、“AAABOY”、“GIRLAAABOY”中找到“AAA”,因此,我最终得到了重复项。

当我这样做时,grep -F "AAA"它们都会被返回。

如果有人能帮助我解决这个问题,我将不胜感激。我是 Linux 操作系统的新手。

linux ubuntu grep uniq

0
推荐指数
1
解决办法
1602
查看次数

使用 SYSTEMCTL 状态的 grep 搜索结果到 IF CONDITION

首先,感谢您对此问题的调查!

我是 bash 脚本的新手,我想要实现的是:我目前必须经常在工作中重新启动一些服务,我正在尝试创建一个脚本来自动化它,我设法创建了所有内容,但我也想创建一个条件,其中如果 systemctl status = inactive 则 echo“好的,很好,一切都很好”,所以让我们继续,但如果没有,则 echo“将在 10 秒内重新尝试重新启动”;我使用 grep 从服务的 systemctl 状态中查找文本“active: active (running)”或“active: inactive (dead)”(由下面的 bluetooth.service 表示):

#!/bin/bash
#Restarting  bluetooth.service

clear
active_stop="Active: stopped (dead)"    
echo  "This script will RESTART the following service: Bluetooth.Service"
echo -e  "State the REASON for the RESTART: " >> /home/sjadmin/SYS_RESTART/ARCHIVE/sysrestart.log
read -p  "Press ENTER to continue or CTRL + C to cancel"

sudo systemctl stop bluetooth.service |grep active IF [[grep -q=$active_stop]] 

then read -p  "Service STOPPED, please confirm status bellow, …
Run Code Online (Sandbox Code Playgroud)

grep if-statement conditional-statements systemctl

0
推荐指数
1
解决办法
5543
查看次数

获取以数字开头的行

我有一个 bash 命令diff file1 file2,相应的输出类似于:

74,100c74,100
<         some text
Run Code Online (Sandbox Code Playgroud)

这只是一个小子集,当然,diff输出中的行开头变化很大(我知道>, <, -, \和 chars from 1to 9,但可能还有其他,我不太确定)。1我只想要以从到 的数字开头的输出行9(不是0,因为我只关心发生更改的位置,并且行号不会以 开头0)。

因此,如果我diff使用该命令进行管道传输,输出应该是:

74,100c74,100
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?谢谢...

regex diff awk grep

0
推荐指数
1
解决办法
1856
查看次数

git reflog 管道传输时丢失数据

git reflog
Run Code Online (Sandbox Code Playgroud)

输出日志看起来像这样

8b388bc (HEAD -> master) HEAD@{0}: commit (amend): tempppp22222
7c33c70 (tag: v2.0) HEAD@{1}: commit: tempppp
76702b2 (origin/master, origin/HEAD) HEAD@{2}: reset: moving to HEAD^
fc1ea9d HEAD@{3}: commit (amend): temp2
0bc8223 (tag: v1.0) HEAD@{4}: reset: moving to 0bc8223
Run Code Online (Sandbox Code Playgroud)

但当我尝试时

git reflog | grep "HEAD@{1}"
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

7c33c70 HEAD@{1}: commit: tempppp
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么标签名称丢失吗?

git bash grep git-tag

0
推荐指数
1
解决办法
141
查看次数

如何使用 shell 脚本从 xml 文件中提取值?

我有这个 xml 文件。

<body>
<part1>
   <para1>abc</para1>
   <para2>def</para2>
   <ver>1234</ver>
</part1>    
</body>
Run Code Online (Sandbox Code Playgroud)

ver我需要将ie给出的值存储1234在变量中。

xml shell awk grep xmllint

0
推荐指数
1
解决办法
1078
查看次数

grep/sed/awk - 将文件中的所有“$X”替换为新的计算值“$X/10”

这是我的原始文件:

#Game No : 1000693
***** 888poker Hand History for Game 1000693 *****
$1/$2 Blinds No Limit Holdem - *** 18 11 2021 10:41:44
Table DD Poker 9 Max (Real Money)
Seat 7 is the button
Total number of players : 9
Seat 1: Monroe ( $2 )
Seat 2: Mpeti ( $2 )
Seat 3: Bowen ( $2 )
Seat 4: Riccardo ( $2 )
Seat 5: Ramman ( $2 )
Seat 6: Reva ( $2 )
Seat 7: …
Run Code Online (Sandbox Code Playgroud)

bash awk grep sed

0
推荐指数
1
解决办法
214
查看次数

如何将 sed 应用于 bash 脚本中的 grep 结果?

我想使用一些 sed 命令修改 csv 文件,但仅限于与某些正则表达式匹配的行。

我有一个在脚本中运行良好的 grep 命令:

#!/usr/bin/bash   
   
egrep  '^[A-Z][a-z]*,2018' happiness.csv
Run Code Online (Sandbox Code Playgroud)

以及所需的正确工作的 sed 命令:

#!/usr/bin/bash   
       
sed  -re '

 s/(^|,)(,|$)/\1NULL\2/g; s/(^|,)(,|$)/\1NULL\2/g
 s/[a-z]/\U&/g
 s/([0-9]+\.[0-9]{2})[0-9]+/\1/g
  
' happiness.csv
Run Code Online (Sandbox Code Playgroud)

当我将它们组合在一个脚本中时,grep 命令被省略,脚本仅运行 sed 命令:

#!/usr/bin/bash   
   
egrep  '^[A-Z][a-z]*,2018' happiness.csv

sed  -re '

 s/(^|,)(,|$)/\1NULL\2/g; s/(^|,)(,|$)/\1NULL\2/g
 s/[a-z]/\U&/g
 s/([0-9]+\.[0-9]{2})[0-9]+/\1/g
  
' happiness.csv
Run Code Online (Sandbox Code Playgroud)

样本数据:

Country name,Year,Life Ladder,Log GDP per capita,Social support,Healthy life expectancy at birth,Freedom to make life choices,Generosity,Perceptions of corruption,Positive affect,Negative affect,Confidence in national government,Democratic Quality,Delivery Quality,Standard deviation of ladder by country-year,Standard deviation/Mean of ladder by country-year,GINI index (World Bank …
Run Code Online (Sandbox Code Playgroud)

bash awk grep sed

0
推荐指数
1
解决办法
125
查看次数

如何根据特定的grep注释掉多行?

这是一个测试文件

dog
dogcatmoose
case $- in 
      *i*);;
        *) return;;
esac

catmoose
case
esac
dog cat
esac
Run Code Online (Sandbox Code Playgroud)

我需要注释掉以下内容:

dog
dogcatmoose
#case $- in 
#      *i*);;
#        *) return;;
#esac

catmoose
case
esac
dog cat
esac
Run Code Online (Sandbox Code Playgroud)

请注意,仅注释掉了特定行。另请注意,我需要对多个文件执行此操作,并且注释掉的那些行可能位于文件的不同区域。然而,这些线将永远在一起。因此我无法根据行号使用 sed 进行注释。

我如何具体注释掉这些行,这将适用于多个文件,其中该部分可能位于文件中的任何位置。我假设我可以 grep on'case $- in'然后注释掉该行以及esac之后的第一个实例的所有行'case $- in'

我怎样才能做到这一点?

bash awk grep comments sed

0
推荐指数
1
解决办法
449
查看次数

标签 统计

grep ×10

awk ×5

bash ×5

sed ×3

comments ×1

conditional-statements ×1

diff ×1

git ×1

git-tag ×1

if-statement ×1

linux ×1

regex ×1

shell ×1

systemctl ×1

ubuntu ×1

uniq ×1

unix ×1

xml ×1

xmllint ×1