小编gkm*_*hit的帖子

变量上的 grep

假设我有一个变量

line="This is where we select from a table."
Run Code Online (Sandbox Code Playgroud)

现在我想 grep 有多少次 select 在句子中出现。

grep -ci "select" $line
Run Code Online (Sandbox Code Playgroud)

我试过了,但没有用。我也试过

grep -ci "select" "$line"
Run Code Online (Sandbox Code Playgroud)

它仍然不起作用。我收到以下错误。

grep: This is where we select from a table.: No such file or directory
Run Code Online (Sandbox Code Playgroud)

shell grep string

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

仅使用“tr”将多个空格替换为一个

我有一个文件,f1.txt

ID     Name
1      a
2         b
3   g
6            f
Run Code Online (Sandbox Code Playgroud)

空格数固定。仅使用一个空格替换所有空格的最佳方法是什么tr

这是我到目前为止:

cat f1.txt | tr -d " "
Run Code Online (Sandbox Code Playgroud)

但输出是:

IDName
1a
2b
3g
6f
Run Code Online (Sandbox Code Playgroud)

但我希望它看起来像这样:

ID Name
1 a
2 b
3 g
6 f
Run Code Online (Sandbox Code Playgroud)

请尽量避免sed

shell cut tr

93
推荐指数
4
解决办法
23万
查看次数

带有 if 语句的 awk

我正在尝试使用 awk 从文件中打印,但我的输出为空。到目前为止,这是我的代码

accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
            awk -F',' '{ if($1==accountNum) { print $3.$2 } }' Accounts
done < Accounts
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

accountNum=$1
while read -r LINE || [[ -n $LINE ]] ; do
            echo $LINE  | awk -F',' '{ if($1==accountNum) { print $3.$2 } }' 
done < Accounts
Run Code Online (Sandbox Code Playgroud)

输入文件是:

1,Doe,John
2,Rooney,Wayne
3,Smith,Will
4,Crow,Russel
5,Cruise,Tom
Run Code Online (Sandbox Code Playgroud)

我运行文件时的预期输出是

$./file.sh 3
Will Smith
Run Code Online (Sandbox Code Playgroud)

但我得到以下

$./file.sh 3
$
Run Code Online (Sandbox Code Playgroud)

那是什么都没有打印出来。我知道使用 cut 的解决方案,但我想使用 awk。

shell scripting awk

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

检查文件夹是否存在某种类型的文件

如何检查文件是否有扩展名为 .java 的文件?

到目前为止,我有:

  for javaFile in *.java ; do
    {
        echo "The file $javaFile has : " >> ~/Desktop/externalServers.txt
        grep -E '^[^/]{2}.*http' $javaFile >> ~/Desktop/externalServers.txt     

        grep -E '^[^/]{2}.*ftp' $javaFile  >> ~/Desktop/externalServers.txt

        echo "----------------------------------------" >> ~/Desktop/externalServers.txt
        sed -e "s/[[:space:]]\+/ /g" ~/Desktop/externalServers.txt >> ~/Desktop/externalServersTemp.txt
        rm ~/Desktop/externalServers.txt
        mv ~/Desktop/externalServersTemp.txt ~/Desktop/externalServers.txt
        sed 's/^\n//' ~/Desktop/externalServers.txt >> ~/Desktop/externalServersTemp.txt
        rm ~/Desktop/externalServers.txt
        mv ~/Desktop/externalServersTemp.txt ~/Desktop/externalServers.txt

    } done
Run Code Online (Sandbox Code Playgroud)

但是每次我这样做时,我都会收到错误消息:

grep: *.java: 没有那个文件或目录

基本上我想首先查看文件夹是否有任何 .java 类型的文件,然后只继续执行脚本。

shell wildcards files

7
推荐指数
1
解决办法
2457
查看次数

仅将文件的特定文本复制到另一个

我有一个文件 abc.txt 的内容是

<classpathentry kind="src" path="Sources"/>
<classpathentry kind="con" path="WOFramework/ERExtensions"/>
<classpathentry kind="con" path="WOFramework/ERJars"/>
<classpathentry kind="con" path="WOFramework/ERPrototypes"/>
<classpathentry kind="con" path="WOFramework/JavaEOAccess"/>
<classpathentry kind="con" path="WOFramework/JavaEOControl"/>
<classpathentry kind="con" path="WOFramework/JavaFoundation"/>
<classpathentry kind="con" path="WOFramework/JavaJDBCAdaptor"/>
Run Code Online (Sandbox Code Playgroud)

我想将所有路径复制到另一个文件中。那就是我希望我的输出文本文件看起来像:

    WOFramework/ERExtensions
    WOFramework/ERJars
    WOFramework/ERPrototypes
    WOFramework/JavaEOAccess
    WOFramework/JavaEOControl
    WOFramework/JavaFoundation
    WOFramework/JavaJDBCAdaptor
Run Code Online (Sandbox Code Playgroud)

grep shell-script text-processing

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

查看文件夹中是否包含某些具有特定扩展名的文件

假设我有一个文件结构:

$ cd /home/Desktop
$ ls -d */
Abc/ Qwe/ Zxc/ Rty/
$
Run Code Online (Sandbox Code Playgroud)

现在我想遍历每个目录,看看它们是否有任何“.pdf”文件。有人可以告诉我这样做的最佳方法是什么吗?

ls scripting shell-script wildcards files

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

逐行读取文件,如果满足条件则继续读取直到下一个条件

我有一个文件 foo.txt

test
qwe
asd
xca
asdfarrf
sxcad
asdfa
sdca
dac
dacqa
ea
sdcv
asgfa
sdcv
ewq
qwe
a
df
fa
vas
fg
fasdf
eqw
qwe
aefawasd
adfae
asdfwe
asdf
era
fbn
tsgnjd
nuydid
hyhnydf
gby
asfga
dsg
eqw
qwe
rtargt
raga
adfgasgaa
asgarhsdtj
shyjuysy
sdgh
jstht
ewq
sdtjstsa
sdghysdmks
aadfbgns,
asfhytewat
bafg
q4t
qwe
asfdg5ab
fgshtsadtyh
wafbvg
nasfga
ghafg
ewq
qwe
afghta
asg56ang
adfg643
5aasdfgr5
asdfg
fdagh5t
ewq
Run Code Online (Sandbox Code Playgroud)

我想打印所有的线qweewq在一个单独的文件。这是我到目前为止:

#!/bin/bash

filename="foo.txt"

#While loop to read …
Run Code Online (Sandbox Code Playgroud)

bash shell-script text-processing read

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

在 Java 方法上使用 grep

假设我有一个名为 DirectAction 的 Java 类

类中的某些方法具有“action”或“Action”一词

获取具有“Action”或“action”的所有方法的名称并将其写入外部文件的 grep 命令是什么?

例子:

public class DirectAction extends ERXDirectAction {

/**
 * 
 * @param aRequest
 */
public DirectAction(WORequest aRequest) {

}

// ============================================================================================
// ACTIONS

/**
 * Default Action
 * 
 */
@docDirectAction
public WOActionResults defaultAction() {

}

/**
 * @return goes to login page for student
 */
@docDirectAction
public WOActionResults studentAction() {
    );
    return nextPage;
}

/**
 * @return goes to Admin login page
 */
@docDirectAction
public WOActionResults adminAction() {
    return nextPage;
}

/** …
Run Code Online (Sandbox Code Playgroud)

shell grep scripting java shell-script

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

grep 表示所有没有特定单词的行

我有一个文件 fileA.txt

Batman.plist
Green Arrow.plist
Hawkgirl.plist
EOPrototypes.plist
Person.plist
EOPrototypes.plist
EOJavellinPrototypes.plist
Sinestro
Slomon Grundy.plist
Batman Beyond.plist
EORedRobin
EORavenPrototypes.plist
Run Code Online (Sandbox Code Playgroud)

现在,如果我想获得的所有线路为此与plist和不包含的字Prototype。到目前为止我有

grep -v "Prototype" fileA.txt | grep -E "*plist$"
Run Code Online (Sandbox Code Playgroud)

输出是

Batman.plist
Green Arrow.plist
Hawkgirl.plist
Person.plist
Slomon Grundy.plist
Batman Beyond.plist
Run Code Online (Sandbox Code Playgroud)

这正是我想要的,

但是有没有更好的方法来做到这一点?

grep

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

如何 grep 损坏的 HTML 标签?

我想查看我所有的 HTML 文件,看看那里是否有任何错误的标签,例如<br><hr>等等,也就是说,我想查看 HTML 文件中没有关闭哪些标签。

for htmlFile in `ls -f *.html ` ; do
        if `cat $htmlFile | grep -inE "\<br\>"` ; then
           echo "In file $htmlFile there are errors on the following lines: "  >> ~/Desktop/$1_errors.txt
           cat $htmlFile | grep -in "<br>"| cut -d ":" -f1 >> ~/Desktop/$1_errors.txt
           echo "----------------------------------------" >> ~/Desktop/$1_errors.txt
       fi
done
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误,我怀疑是我的正则表达式。

./script.sh: line 14: 10:<BR: command not found
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误之一:)

shell grep bash html

0
推荐指数
2
解决办法
1578
查看次数

标签 统计

shell ×6

grep ×5

shell-script ×4

scripting ×3

bash ×2

files ×2

text-processing ×2

wildcards ×2

awk ×1

cut ×1

html ×1

java ×1

ls ×1

read ×1

string ×1

tr ×1