小编Duc*_*uck的帖子

搜索和替换特定文件扩展名上的字符串

我有这个 bash:

  replace="s/AAAA/BBBB/g";
  find myDirectory/. -type f -print0 | xargs -0 sed -i $replace;
Run Code Online (Sandbox Code Playgroud)

这将递归扫描myDirectory树并替换那里文件上所有出现的AAAAwith BBBB

但我想限制这种情况发生在特定的扩展的文件,例如.txt.read.po

我如何施加这个限制?

bash string

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

Bash - 文件、数组和输出

我有一个包含员工姓名、部门和员工所在城市的文件,例如:

John
IT
Chicago
Joshua
accounting
New York
Marcy
CEO
Los Angeles
... 
Run Code Online (Sandbox Code Playgroud)

我必须将此文件转换为这种格式:

John?IT?Chicago
Joshua?accounting?New York
Marcy?CEO?Los Angeles
Run Code Online (Sandbox Code Playgroud)

使用问号作为字段分隔符

到目前为止,我已经完成了这个 bash 脚本:

fname="mix.txt"
exec<$fname

index=0
while read line ; do
        ARRAYLINES[$index]="$line"
        index=$(($index+1))
done < $fname

NUMBERLINES=$(grep -c "" $fname)
NUMBERLOOP=$(($NUMBERLINES/3))


count=0

for i in $(eval echo {1..$NUMBERLOOP})
do
  one=$(($count+1))
  two=$(($count+2))

  LINE0=${ARRAYLINES[$count]}
  LINE1=${ARRAYLINES[$one]}
  LINE2=${ARRAYLINES[$two]}
  ((count + 3))

  FINAL="$LINE0?$LINE1?$LINE2"
  echo $FINAL >> final.txt
done
Run Code Online (Sandbox Code Playgroud)

最终文件具有正确的行数,但所有行都等于第一个员工数据,例如

John?IT?Chicago
John?IT?Chicago
John?IT?Chicago
John?IT?Chicago
John?IT?Chicago
John?IT?Chicago
John?IT?Chicago
Run Code Online (Sandbox Code Playgroud)

任何线索?

bash text-processing files

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

如何生成在 Mac OS Roman 中编码的文件

在 bash 脚本中,我有一行创建然后在循环中,将字符串附加到文本文件中,例如

echo $myTextString >> file.txt 
Run Code Online (Sandbox Code Playgroud)

我需要使用Western (Mac OS Roman)格式化这个最终文件。

脚本启动时该文件不存在,因此第一行将创建该文件。有没有办法使文件成为该格式或在最后将其转换为这种 Mac OS Roman 格式?我如何在 bash 脚本中做到这一点?

shell character-encoding

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

将变量附加到 Bash 中的文件不起作用

我有这样的代码

#! /bin/bash

$version = "1.0";
$preffix = "ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo $preffix >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo $version >> myFile.txt
done;
Run Code Online (Sandbox Code Playgroud)

输出是

bla bla bla

more stuff
Run Code Online (Sandbox Code Playgroud)

$version 和 $prefix 没有添加到 myFile.txt ......为什么?

bash

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

使用 grep 显示匹配模式且至少出现 X 次的条目

我有一个文件,在其他行中包含这样的条目

Feb 16 17:30:18 ns1 dovecot: pop3-login: Disconnected (auth failed, 1 attempts in 17 secs): user=<accountin@myserver.com>, method=PLAIN, rip=200.250.9.210, lip=10.10.10.10, session=<Sed519rVnADI+gnS>
Run Code Online (Sandbox Code Playgroud)

每次找到这样的一行时,我都想提取与 rip 部分关联的 IP,但我想提取至少显示 3 次的 IP。

我正在尝试使用 grep 来做到这一点。

这是我的 grep

more /var/log/maillog-20130217 | grep "auth failed" | grep -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4
][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' 
Run Code Online (Sandbox Code Playgroud)

此 grep 显示匹配行中的所有 IP

如果我至少有 3 行与该 IP 匹配且只有唯一 IP,我该如何限制此 grep 仅显示 IP?

我是说这个。假设我的日志有这个

Feb 16 17:30:18 ns1 dovecot: pop3-login: Disconnected (auth failed, 1 attempts in 17 secs): user=<accountin@myserver.com>, method=PLAIN, rip=200.250.9.210, lip=10.10.10.10, session=<Sed519rVnADI+gnS>
Feb 16 17:30:18 ns1 …
Run Code Online (Sandbox Code Playgroud)

grep text-processing

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

如何用序列号替换 CSV 中的第一个元素?

我有一个像这样的 csv 文件:

5/05/2017;03;07;30;35;43;01;03
9/05/2017;08;12;16;22;26;06;07
12/05/2017;02;20;28;29;44;03;09
16/05/2017;08;11;15;20;30;03;08
19/05/2017;09;11;12;19;30;04;09
23/05/2017;08;15;25;27;42;01;04
26/05/2017;05;07;26;36;39;02;10
...
Run Code Online (Sandbox Code Playgroud)

也就是说,一个日期,加上一系列数字,后跟;

我需要在第一个位置删除那个日期,并按顺序从 1004 开始......像这样:

1004;03;07;30;35;43;01;03
1005;08;12;16;22;26;06;07
1006;02;20;28;29;44;03;09
1007;08;11;15;20;30;03;08
1008;09;11;12;19;30;04;09
1009;08;15;25;27;42;01;04
1010;05;07;26;36;39;02;10
...
Run Code Online (Sandbox Code Playgroud)

我可以使用这个删除日期:

cut -f 2-8 -d';' 2.txt | xargs -I{}
Run Code Online (Sandbox Code Playgroud)

但是如何按顺序添加一个数字来替换日期?

cut csv

4
推荐指数
2
解决办法
1447
查看次数

如何使用 SED 或 AWK 从 txt 文件中删除特定数字?

我在一家不允许我在我的电脑上安装任何软件的公司工作,而且我在那里运行的窗口很糟糕。

我需要清理很多我从内网复制的文本并保存为txt文件。所以我必须使用sed和/或awk在线实时编辑器,像这样这样

这些文字是这样的

01

010010-26.2010.501.0026  fafas fasdf asdf asdfsadf asdfasd fasd asasdff

fdfsadf adsf adsf asdf asdfas fadsf asdfa

02

0011-15.2016.501.0012  fafas fasdf asdf asdfsadf asdfasd fasd asasdff
asdfasd fasd asasdff
asdfasd fasd asasdff
0011-125.2013.501.0012
asdfasd fasd asasdff
Run Code Online (Sandbox Code Playgroud)

看到这样的数字0011-15.2016.501.0012就是我想要的。我不关心其余的,但我想用所有这些数字创建一个新的干净文本,每行一个。在前面的例子中,我需要一个文本

010010-26.2010.501.0026
0011-15.2016.501.0012
0011-125.2013.501.0012
Run Code Online (Sandbox Code Playgroud)

.501.始终存在,在所有的数字,是4组。

我在 sed 在线编辑器上试过这个命令

's/\([0-9]*\-[0-9]*\.[0-9]*\.501\.[0-9]*\)/\1/'
Run Code Online (Sandbox Code Playgroud)

不工作。

sed awk text-processing

4
推荐指数
2
解决办法
406
查看次数

重命名一堆文件但保留数字部分

我有一堆这样的文件:

pic100.png
pig102.png
box103a.png
superb103b.png
px103c.png
rotor110 - new.png
ready1323 (yellow car).png
motorhome1036x red circle.png
...
Run Code Online (Sandbox Code Playgroud)

因此,您可以注意到文件可能有 3 个部分:

  • 可以是任何字符串的前缀
  • 一个可能包含后缀的数字,如“a”、“b”等。
  • 一个可选的结尾,它总是一个字符串并以空格开头,如“(黄色汽车)”、“红色圆圈”等。

我需要的是:我想在一次操作中:

  • 将前缀更改为我想要的前缀
  • 保留数字和后缀 (a, b, c...) 如果有的话
  • 摆脱结局

使用第一个示例,我可能想将其转换为

object100.png
object102.png
object103a.png
object103b.png
object103c.png
object110.png
object1323.png
object1036x.png
Run Code Online (Sandbox Code Playgroud)

我怎么做?正如你看到的,我唯一保留的是数字和后缀“a,b,c”,当有一个时......

为简单起见,该命令必须在给定目录中的所有文件中运行。

提前致谢。

rename

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

查找损坏的文件

我有一个包含无数文件的目录。一旦我尝试复制此目录,我就会收到一条消息,指出无法复制文件(损坏?)并且复制停止。

我可以在终端上输入任何命令来检查该目录树上的所有文件并列出所有无法复制或损坏的文件吗?我现在不想复制文件,只是为了检查如果我尝试是否无法复制/读取文件。

我在 OS X Mountain Lion 上,但我希望任何 unix 命令都可以正常工作。

谢谢。

注意:损坏是指无法读取或复制的文件。

osx file-copy corruption

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

两两压缩文件

我有一个包含 800 个文件的目录,如下所示:

file1.png
file1@2x.png

file2.png
file2@2x.png

file3.png
file3@2x.png

... etc
Run Code Online (Sandbox Code Playgroud)

我需要创建这样的 zip 文件

file1.zip (containing file1.png and file1@2x.png)
file2.zip (containing file2.png and file2@2x.png)
file3.zip (containing file3.png and file3@2x.png)
Run Code Online (Sandbox Code Playgroud)

有没有我可以使用的魔法命令来做到这一点?

command-line bash zip wildcards

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