小编Ben*_* W.的帖子

用sed和变量剪切日志文件

我有日期和事件的日志文件.我想不时检查这个文件,只查看特定时间点的记录,例如上次检查时的最后一次错误.

05/03/2016 23:55:25.142639 user1
05/04/2016 12:55:25.142639 user4
05/04/2016 13:57:25.142639 user3
05/04/2016 13:51:02.236522 user2
Run Code Online (Sandbox Code Playgroud)

我希望在变量中包含日期

variable="05/04/2016 12:55:25.142639"
Run Code Online (Sandbox Code Playgroud)

我试图运行以下命令,但没有成功:

[sdtest tmp]$ sed -n "/$variable/,\$p" logfile.out
sed: -e expression #1, char 5: unknown command: `0'
Run Code Online (Sandbox Code Playgroud)

linux variables bash sed

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

不区分大小写地比较字符串

我想比较Hello Worldhello world.结果应该是真的,好像它们是平等的.我正在做:

while read line; do

    newLine="$newLine$line"
done < $1

newp="Hello World"
if (( ${newp,,}==${newLine,,} )); then
    echo "true"
else
    echo "false"

fi
Run Code Online (Sandbox Code Playgroud)

当我传递包含以下内容的文本文件时:

#filename: file.txt

hello world
Run Code Online (Sandbox Code Playgroud)

输出似乎是:

./testScript.txt: line 20: 0à»: hello world==hello world : syntax error in expression (error token is "world==hello world ")
+ echo false
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?此外,有点无关,有没有办法将行中的行传递file.txt给字符串(newLine)而不做while我已经做过的事情?

unix bash shell

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

如何在Bash中进行不区分大小写的字符串比较?

我的剧本:

echo "input yes or no"
read a
if [ $a = "yes" ] or [ $a = "Yes" ] or [ $a = "YES" ];
then
    command
else
    command
done
Run Code Online (Sandbox Code Playgroud)

我有一个想法,我将首先转换答案(使用tr A-Z a-z命令),之后与字符串进行比较......是吗?

bash shell

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

如何删除文件名开头的数字,短划线和下划线

我有成千上万的MP3文件,但所有的不寻常的文件名,例如 1-2songone.mp3,2songtwo.mp3,2_2_3_songthree.mp3.我想删除这些文件开头的所有数字,破折号和下划线并获得结果:

songone.mp3
songtwo.mp3
songthree.mp3
Run Code Online (Sandbox Code Playgroud)

unix linux bash filenames

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

替换文本中的段落

如何使用 shell 命令(sed 或 awk)来替换文件中的段落,如下所示:

bala bala ba1
balabala.
leave me here.

this paragraph
yes, I'm going
to be replaced

The rest contains
should not be replaced.
Run Code Online (Sandbox Code Playgroud)

更换后:

bala bala ba1
balaba.
leave me here.

New contains,
I'm replacement!

The rest contains
should not be replaced.
Run Code Online (Sandbox Code Playgroud)

我声明original包含在一个变量中$OLD,而new包含在另一个变量中$NEW

bash awk sed

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

Bash 参数扩展仅在交互式 shell 中有效,但在脚本中无效

在用户控制台中我有bash

$ echo $SHELL
/bin/bash
$ bash --version
GNU bash, version 4.2.46(1)-release (x86_64-redhat-linux-gnu)
Run Code Online (Sandbox Code Playgroud)

我在文件 test.sh 中有代码:

$ cat test.sh
aaa='---aa-aa---'
echo "${aaa}"
echo 'does not work...'
# trim "-"
echo ${aaa/+(-)}
echo ${aaa%%+(-)}
echo 'works for one symbol...'
echo ${aaa%-}
echo ${aaa/-}
Run Code Online (Sandbox Code Playgroud)

最后两行工作正常,但前面的两行工作正常。

$ bash test.sh
---aa-aa---
does not work...
---aa-aa---
---aa-aa---
works for one symbol...
---aa-aa--
--aa-aa---
Run Code Online (Sandbox Code Playgroud)

同时,如果您尝试使该控制台正常工作:

$ aaa='---aa-aa---'
$ echo ${aaa/+(-)}
aa-aa---
$ echo ${aaa%%+(-)}
---aa-aa
Run Code Online (Sandbox Code Playgroud)

那么,为什么它在脚本中不起作用呢?

bash trim

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

如何从Bash中的文件名中删除前导破折号

我有一个目录,其中包含以下文件:

-001.jpg
-002.jpg
...
-100.jpg
Run Code Online (Sandbox Code Playgroud)

我想删除每一个的主要短划线.

我试过了:

rename -vn 's/^-//g' *
Run Code Online (Sandbox Code Playgroud)

但我得到:

Unknown option: 0
Unknown option: 0
Unknown option: 0
Unknown option: .
Unknown option: j
Unknown option: p
Unknown option: g
Unknown option: 0
Unknown option: 0
Run Code Online (Sandbox Code Playgroud)

等等......

一个人怎么玩这个伎俩?

bash rename

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

使用文本文件中的前缀重命名文件

我有一组名为的文件

sample_exp_A1_A01
sample_exp_A2_A02
sample_exp_A3_A03
sample_exp_A4_A04
sample_exp_A5_A05
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下值的文本文件

A01 170
A02 186
A03 165
A04 130
A05 120
Run Code Online (Sandbox Code Playgroud)

我想根据文本文件值重命名文件

FS_170_sample_exp_A1_A01
FS_186_sample_exp_A2_A02
FS_165_sample_exp_A3_A03
FS_130_sample_exp_A4_A04
FS_120_sample_exp_A5_A05
Run Code Online (Sandbox Code Playgroud)

所以在文本文件基础上匹配的ID A01A02A03A04然后添加相应的数字作为前缀的文件名.此外,还为所有文件名添加前缀,FS如上所示.

我手动尝试这样做,但一次只能用于一个文件

rename 's/^/FS_170_/' *A01 
Run Code Online (Sandbox Code Playgroud)

要得到

FS_170_sample_exp_A1_A01
Run Code Online (Sandbox Code Playgroud)

regex awk sed

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

从bash脚本中删除OS X中的目录

我想从bash脚本运行此命令.

rm –rf secure_gate
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,我收到此错误,我找不到原因:

rm: –rf: No such file or directory
rm: secure_gate: is a directory
Run Code Online (Sandbox Code Playgroud)

你知道在OS X中删除目录的正确方法是什么?

macos bash

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

如何使用 bash 计算命令行上某个日期范围内特定文件的数量?

该请求只是特定目录中文件的基本计数。我当前的流程使用ipswitch

  1. 将三月份的文件复制到我的本地目录(Windows)
  2. 按名称排序,如有必要,删除我不需要计数的文件(从我的本地)
  3. 选择所有或特定文件,查看总数,然后将其输入我维护的电子表格中。

该电子表格用于每月报告可交付成果...

我了解一些 UNIX/Linux 基础知识,例如目录导航,了解一些 grep,但对 find 几乎一无所知。

我不知道如何在特定日期范围内按月搜索目录中的文件,并计算有多少文件......有时具有特定名称或扩展名。我想

ls -l |grep ...something something...
Run Code Online (Sandbox Code Playgroud)

可能有用,但我已经碰壁了。

如果需要更多信息,请告诉我,抱歉这么啰嗦。

linux bash grep date count

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

标签 统计

bash ×9

linux ×3

sed ×3

awk ×2

shell ×2

unix ×2

count ×1

date ×1

filenames ×1

grep ×1

macos ×1

regex ×1

rename ×1

trim ×1

variables ×1