我正在尝试对一个文件进行循环,该文件包含多个具有条件的多列(字段)的行.
以下是示例文件(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)
显然,上面的脚本测试行和列.但是如果第一个字段不存在并且第二个字段不存在,我还想循环到第二个,第三个和第四个字段,测试第三个字段,直到第四个字段.
我想使用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)。
我试图结合猫和尾命令:
像这样:
我有文件名"text1",并希望合并到文件名"text2".但首先我要在文件text1中删除7行,然后才合并到文件"text2"
tail --lines=+7 text1 | cat text2 > out_put
Run Code Online (Sandbox Code Playgroud)
这在Ubuntu 12.04上对我不起作用
我尝试在其他 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