Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用分隔符读取文件,并使用shell脚本基于分隔符逐行写入不同的文件_Shell_Ksh - Fatal编程技术网

如何使用分隔符读取文件,并使用shell脚本基于分隔符逐行写入不同的文件

如何使用分隔符读取文件,并使用shell脚本基于分隔符逐行写入不同的文件,shell,ksh,Shell,Ksh,我有一个要求,比如文件foo.txt,其中包含键值对,如下所示: vi foo.txt a^1.0^b^2^cc^30^d^4^e^55^fg^67.0^h^8^i^99 等等。 我必须编写一个shell脚本,将不同行中的每个键值对放到不同的文件中,比如goo.txt,其中包含: a^1.0^ b^2^ cc^30^ D^4^ e^55^ fg^67.0^ h^8^ i^99^ 我有一个类似的Perl脚本,但是我想要shell脚本。Perl脚本类似于 #! /usr/bin/perl -w

我有一个要求,比如文件foo.txt,其中包含键值对,如下所示: vi foo.txt

a^1.0^b^2^cc^30^d^4^e^55^fg^67.0^h^8^i^99
等等。 我必须编写一个shell脚本,将不同行中的每个键值对放到不同的文件中,比如goo.txt,其中包含:

a^1.0^
b^2^
cc^30^
D^4^
e^55^
fg^67.0^
h^8^
i^99^
我有一个类似的Perl脚本,但是我想要shell脚本。Perl脚本类似于

#! /usr/bin/perl -w
#
use strict;
use Getopt::Long;
my $filename     = "";
my $Tags         = "";
GetOptions ('file=s' => \$filename);
if (defined $filename and $filename ne "")
{
    open (my $DATA,$filename) or die $!;
    $Tags       = <$DATA>;
    while ($Tags =~ m/(.*?\^.*?\^)/g)
    {
      print "$1\n";
    }
    close($DATA)
}

我想要一个使用shell脚本的类似代码。需要帮助才能根据我的要求编写一个shell脚本ksh。

cat filename | awk-F^'{split$0,a,^;fori=1;i您希望在每秒钟之后有一个额外的换行符^。 字段没有^,非^字符可以写为[^^]。 每两个字段包含任意数量的字母,不包括^后跟^和^, 应替换为匹配,然后换行

sed 's/[^^]*^[^^]*^/&\n/g' foo.txt

只使用代码的答案通过一些解释得到了改进。另外,花时间格式化代码也会很有帮助。这正是我想要的。它解决了我的问题