我在这些词之间有标签(五):
int id;
double amount;
String name;
public Banks(int id, double amount, String name){
setId(id);
setAmount(amount);
setName(name);
}
public void setId(int id) {
if(id <= 0) {
System.out.println("ID must be greater than 0");
}
this.id = id;
}
public void setAmount(double amount) {
if(amount < 0){
System.out.println("Amount must be greater than or equal to 0");
}
this.amount = amount;
}
public void setName(String name) {
this.name = name;
}
public int getId(){
return id;
}
public double getAmount(){
return amount;
}
public String getName(){
return name;
}
@Override
public String toString(){
return id + " " + amount + " " + name;
}
}
我想要这个输出:
cat dog
我试过这个: public class TestMyClass {
public static void main(String [] args){
System.out.println("Test 1");
testSetId();
System.out.println("Test 2");
testSetAmount();
System.out.println("Test 3");
testSetName();
}
public static void testConstructor() {
Banks testObject1 = new Banks(1, 500, "Mario");
System.out.println(testObject1);
}
public static void testSetId() {
Banks testObject2 = new Banks(1, 500, "Mario");
testObject2.setId(0);
}
public static void testSetAmount() {
Banks testObject3 = new Banks(1, 500, "Toad");
testObject3.setAmount(-25);
}
public static void testSetName() {
Banks testObject4 = new Banks(1, 500, "Luigi");
System.out.printf("Old object3 name: %s%n", testObject4.getName());
testObject4.setName("Mr Luigi");
System.out.printf("New object3 name: %s%n", testObject4.getName());
}
输出与cat dog
:
cat dog
我必须执行两次sed以获得我想要的东西。与sed 's/\t/\n/g; /^$/d' pets
sed 's/\t/\n/g' pets
一样
有没有办法通过一个命令获得所需的输出?
答案 0 :(得分:2)
继续发表评论。 sed 's/\t/\n/g
的问题是,您将{{1>}替换每个 '\t'
。您希望使用单个换行替换选项卡的序列。为此你需要:
'\n'
或者如果您希望sed 's/\t\t*/\n/g'
明确地将'\t'
括在[ ]
中,也可以。
表达式'\t'
与单个标签匹配,后面跟'\t\t*'
匹配标签,后面有零个或多个标签替换序列使用单个'\n'
,产生您想要的输出:
cat
dog
最后的g
(全局)只会用一个换行符替换每个序列,例如:
"cat dog fish"
(由制表符分隔),变为
cat
dog
fish
如果您有任何问题,请与我们联系。
答案 1 :(得分:1)
如果选项卡的数量很重要,BRE将允许您通过转义大括号来指定边界,如下所示:
$ sed $'s/\t\{5\}/\\\n/' <<<$'one\t\t\t\t\ttwo'
one
two
请注意,您尚未指定操作系统,因此不知道您是否使用GNU sed,这样可以在正则表达式中包含\t
之类的内容。 (我使用FreeBSD和macOS,其中sed没有此功能。)但是你已经提到你正在使用bash
,它支持"format expansion"。您可以使用此bash功能在脚本中插入“文字”特殊字符。