【发布时间】:2022-01-26 18:14:40
【问题描述】:
我正在尝试使用 sed 从提供的行号中删除文件的内容。问题是 sed 不接受我提供给它的变量
line_num=$(grep -n "debited" file.csv | sed -n '2 s/:.*//p') && sed -i.bak "$line_num,$d" file.csv
这个想法是从文件中删除 & 之后的所有行,包括模式的第二次出现。
我对@987654323@ 并不固执。 Awk & perl 也可以。
【问题讨论】:
-
您的 shell 可能正在插入
$d。尝试在$d前面加一个反斜杠。 -
在我看来,这里的“给定”部分是“借记”一词,而不是行号。
-
为什么不使用
head? -
任何时候你发现自己在 grep 和 sed 之间使用了多个管道,你应该改用 awk。