Awk程序应处理许多数据文件。在每个数据文件中,它应查找模式并使用新字段插入两行/记录。 (这只是一个例子。最终的程序必须在此操作旁边做更多的事情。)
datafile(s)为例
BEGIN { OFS=FS="\t"}
FNR==1 {flag=0;} p;
#flag && $1!=""{$1=$1; print}
$1=="Record-2" && flag{$1="";$2="newline1"; print; $1=""; $2="newline2"; print}
#$1=="Record-2" {flag=1} p {$1=""; $2="newline1"; print; $1=""; $2="newline2"; print; flag=0} 1
flag!=0{print};
/start/{flag=1}
它是制表符分隔的,这里我们只有1美元。
源程序
Record-1
newline1
newline2
Record-n
由于我使用Windows,因此通过GAWK调用。
想要输出:
Record-1
newline1
newline2
newline2
Record-n
关于“newline2”的出版问题我的输出
FNR==1 {flag=0;} p;
...
flag!=0{print};
/start/{flag=1}
我认为这个问题与“旗帜”的使用有关。但是为了在工作中执行我的awk程序的所有其他操作
import org.openqa.selenium.SessionNotCreatedException;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
public class AppiumUtils {
public static AndroidDriver<AndroidElement> driver = null;
public AndroidDriver<AndroidElement> connectByPackageActivity(String deviceName,
String appPackage,
String appActivity) {
String url = "http://127.0.0.1:4723/wd/hub";
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, deviceName);
capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, appPackage);
capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, appActivity);
try {
driver = new AndroidDriver<AndroidElement>(new URL(url), capabilities);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
} catch (SessionNotCreatedException e) {
System.err.println("Unable to create Appium session");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return driver;
}
}
应该保持不变 - 只要它不会“伤害”。谢谢。
答案 0 :(得分:0)
正如你所说,因为flag
,最后一次
flag!=0{print};
正在进行额外的打印,因此您可以删除$1=="Record-2" ...
中的最后一次打印:
BEGIN { OFS=FS="\t"}
FNR==1 {flag=0}
#flag && $1!=""{$1=$1; print}
$1=="Record-2" && flag{$1="";$2="newline1"; print; $2="newline2"}
#$1=="Record-2" {flag=1} p {$1=""; $2="newline1"; print; $1=""; $2="newline2"; print; flag=0} 1
flag!=0{print}
/start/{flag=1}
另一种选择可能是向flag
添加另一个条件,但不知道这是否会弄乱你的脚本:
BEGIN { OFS=FS="\t"}
FNR==1 {flag=0}
#flag && $1!=""{$1=$1; print}
$1!="Record-2" && flag!=0 {print}
$1=="Record-2" && flag{$1="";$2="newline1"; print; $2="newline2"; print}
#$1=="Record-2" {flag=1} p {$1=""; $2="newline1"; print; $1=""; $2="newline2"; print; flag=0} 1
/start/{flag=1}
或者:
BEGIN { OFS=FS="\t"}
FNR==1 {flag=0}
#flag && $1!=""{$1=$1; print}
$1=="Record-2" && flag{$2="newline1"; print "\t"$2; $2="newline2"; print "\t"$2}
#$1=="Record-2" {flag=1} p {$1=""; $2="newline1"; print; $1=""; $2="newline2"; print; flag=0} 1
$1!="Record-2" && flag!=0{print}
/start/{flag=1}