我想用shebang 执行一个gawk脚本--re-interval."幼稚"的方法
#!/usr/bin/gawk --re-interval -f
... awk script goes here
Run Code Online (Sandbox Code Playgroud)
不起作用,因为gawk是用第一个参数调用的"--re-interval -f"(不是在空白处分开),它不明白.有解决方法吗?
当然你可以不直接调用gawk,而是将它包装成一个分割第一个参数的shell脚本,或者创建一个shell脚本,然后调用gawk并将脚本放到另一个文件中,但我想知道是否有某种方法可以做这在一个文件中.
shebang行的行为因系统而异 - 至少在Cygwin中它不会通过空格分割参数.我只关心如何在一个行为类似的系统上做到这一点; 该脚本不是便携式的.
也许我对 perl/awk/sed 来说太老了,太年轻了不能停止编程。这是我需要解决的问题:
我在 TXT 文件中有这样的信息:
Name:
Name 1
Phone:
1111111
Email:
some@email1
DoentMatterInfo1:
whatever1
=
Name:
Name 2
Phone:
22222222
DoentMatterInfo2:
whatever2
Email:
some@email2
=
Name:
Name 3
DoentMatterInfo3:
whatever2
Email:
some@email3
=
Run Code Online (Sandbox Code Playgroud)
请注意,所需的信息在下一行,有一个记录分隔符 (=) 并且非常重要,有些记录没有所有信息,但可能包含我们不想要的信息。
因此,挑战是在输出中提取所需的信息(如果存在),例如:
Name 1 ; 111111 ; some@email1
Name 2 ; 222222 ; some@email2
Name 3 ; ; some@email3
Run Code Online (Sandbox Code Playgroud)
我尝试过的有点奏效,但剧照不是我想要的。
1. 使用 PERL
使用 Perl 我得到了重要的字段:
while (<>) {
if ($_ =~ /Name/) {
print "=\n". scalar <>;
}
if ($_ =~ /Email/) { …Run Code Online (Sandbox Code Playgroud)