shell命令 若存在某行则删除某个文件某行
时间: 2023-12-24 22:05:26 浏览: 41
可以使用 `sed` 命令来实现删除文件中的某行。假设要删除 `file.txt` 文件中包含字符串 `target` 的行,可以使用以下命令:
```
sed -i '/target/d' file.txt
```
其中,`-i` 参数表示直接在原文件中进行修改,`/target/d` 表示删除包含字符串 `target` 的行。
如果要在某个条件下执行此操作,可以将上述命令包装为一个 shell 函数,例如:
```
function delete_line {
if grep -q "$1" "$2"; then
sed -i "/$1/d" "$2"
echo "Deleted lines containing \"$1\" in file \"$2\"."
else
echo "No lines containing \"$1\" in file \"$2\"."
fi
}
```
其中,`grep -q` 命令用于查找文件中是否存在包含指定字符串的行。如果存在,则调用 `sed` 命令进行删除,并输出提示信息。如果不存在,则输出另一种提示信息。可以通过调用 `delete_line` 函数来执行该操作。例如:
```
delete_line "target" "file.txt"
```
相关问题
shell命令 若未删除某行则删除某个文件某行
您可以使用 `sed` 命令来删除文件中的某一行。可以使用以下命令删除文件中的第 3 行:
```
sed '3d' filename
```
其中,`d` 表示删除,`3` 表示要删除的行号,`filename` 是要删除行的文件名。
如果您想要直接在文件中删除某一行,可以使用 `-i` 参数,如下所示:
```
sed -i '3d' filename
```
这将直接在文件中删除第 3 行。请注意,这将直接修改文件,因此请谨慎操作。
shell命令 若某个文件存在某行则删该行的第一个字符
可以使用如下的Shell脚本命令:
```
#!/bin/bash
if grep -q "某个字符串" "文件名"; then
sed -i 's/^./ /' "文件名"
fi
```
其中,“某个字符串”是你需要查找的字符串,“文件名”是你需要操作的文件名。
这个命令会首先使用grep命令查找文件中是否存在“某个字符串”,如果存在则使用sed命令来删除该行的第一个字符。
请注意,这个命令会直接修改文件,所以请谨慎操作。建议在操作前备份文件。