小编Yac*_*cob的帖子

在bash中循环遍历行和多列

我正在尝试对一个文件进行循环,该文件包含多个具有条件的多列(字段)的行.

以下是示例文件(file.txt)的样子:

aaa  bbb  ccc
ddd  kkk
fff  ggg  hhh lll
ooo
sss
Run Code Online (Sandbox Code Playgroud)

...等等...

我想写一个循环在第一个字段的第一行的bash脚本,如果名称存在,则继续到第二行.如果第一个字段的第一行的名称不存在,则测试第二个字段(在这种情况下测试名称"bbb"),依此类推,直到第四个字段.我有一个可变字段编号,最多有四(4)个字段,给定行最少有一个字段(列).

for i in cat file.txt; do 
    echo $i
    if [ -e $i ]; then
        echo "name exists"
    else
        echo "name does not exist"
    fi
done 
Run Code Online (Sandbox Code Playgroud)

显然,上面的脚本测试行和列.但是如果第一个字段不存在并且第二个字段不存在,我还想循环到第二个,第三个和第四个字段,测试第三个字段,直到第四个字段.

bash loops

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

比较awk中的连续行

我想使用awk命令比较文件中的连续行。这是输入和输出的示例。

输入文件

6    
7    
8    
9    
10    
4    
5    
6
Run Code Online (Sandbox Code Playgroud)

我想要的输出文件是这样的:

6
7
8
9
10 
14 
15 
16  
Run Code Online (Sandbox Code Playgroud)

基本上,我想比较当前行是否大于上一行,并继续打印前一行和当前行。当前行小于前一行时,请在每个后续行中添加一个值(10)。

awk compare

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

结合猫尾

我试图结合猫和尾命令:

像这样:

我有文件名"text1",并希望合并到文件名"text2".但首先我要在文件text1中删除7行,然后才合并到文件"text2"

     tail --lines=+7 text1 | cat  text2 > out_put 
Run Code Online (Sandbox Code Playgroud)

这在Ubuntu 12.04上对我不起作用

ubuntu tail cat

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

在 @INC 中找不到 new.pm

我尝试在其他 shell 脚本中运行 perl 脚本,但遇到了以下问题:

无法在@INC中找到new.pm(@INC包含:/usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/ perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl

我已经专门设置了附加本地 Perl 脚本的路径,即我的 Perl 脚本(test.pl)中的“new.pm”,但错误仍然出现。(perl -V) 显示我本地 Perl 的路径。我还使用命令“PERL5LIB”在我的配置文件中进一步设置了“new.pm”的路径。

但是,当我在命令行上运行脚本时:

./test.pl 
Run Code Online (Sandbox Code Playgroud)

它确实有魅力。

附言。she-bang 线已正确设置。附言。平台:linux,OS_vers=2.6.32-5-amd64

perl

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

标签 统计

awk ×1

bash ×1

cat ×1

compare ×1

loops ×1

perl ×1

tail ×1

ubuntu ×1