我有一个名为xyz.txt的文件和一个varibale delVar = 123 我需要从xyz.txt中删除一行,其中包含字符串:
一些(文字($ delVar
我尝试了sed和awk的多种组合:
import java.util.Scanner;
public class PascalTriangle
{
public static void main (String args[]) throws InterruptedException
{
Scanner input = new Scanner(System.in); //declare scanner
int [] x = new int [1000]; //declare array x to fill in the numbers of triangle
x [0] = 1;
x [1] = 1;
x [2] = 1;
int row = 2;
int num = 0; //numbers displayed per row
int a = 2; //to be used for array
int y; //user input
System.out.println("Pascal Triangle Solver to the nth row");
System.out.println("Type how many rows you would like to solve");
y = input.nextInt();
System.out.println(+x[0]+"\n" +x[1]+ " " +x[2]);
while (row != y)
{
System.out.println("\n");
num = 0;
row++;
for(num = 0; row > num; row++)
{
x [a+1] = x [a-row] + 1; //where the error occurs
a++;
num++;
System.out.println(+x[a]+ " ");
while (num < row)
{
x[a] = x [a - row] + x [a - row + 1];
System.out.println(+x[a]+ " ");
a++;
num++;
}
x [a+1] = x [a - row];
a++;
num++;
System.out.println(+x[a]);
}
}
}
}
不能工作。
sed -i "/Some\\\(text\\\($delVar/d" xyz.txt
也不起作用。
当我试图绕过&#39;(&#39;使用单\,错误&#34;无法匹配(或(&#34;出现。
我正在使用cygwin来运行它。
我的.sh文件:
sed -i '/Some\\(text\\('"$delVar"'/d' xyz.txt
我的命令:
accountId=$1
Number=$2
temp="Example"
grep $temp History.txt > $Number-History.txt
sed -i '/VALUES (CAST('"$accountId"'/d' $Number-History.txt
sed -i '/, CAST('"$accountId"' /!d' $Number-History.txt
sed -i 's/History.txt:/ /' $Number-History.txt
HistCount=$(wc -l < "$Number-History.txt")
echo $HistCount
在这里,当我在accountId中保存123并尝试在我的模式中设置它时,它匹配模式的数字1234,1123等
答案 0 :(得分:0)
如Sundeep在评论中所述,您无需转义(
,因为默认情况下,sed使用基本的正则表达式(其中(
和+
而其他人不需要被转义以匹配文字(
或+
等。)
但你确实需要转义$
,因为$
匹配模式空间的结尾。
sed -i "/Some(text(\$delVar/d" xyz.txt
应该有用。
如果要使用扩展的正则表达式,请使用-r
标志。
sed -ir "/Some\(text\(\$delVar/d" xyz.txt
现在您需要转义(
以及$
s。