[英]Delete lines from file with SED or AWK
我看過很多變化,對如何解決這三個問題非常困惑。
使用sed:
刪除第1行:
sed '1d' file-name
刪除第10行:
sed '10d' file-name
刪除第5行到第10行
sed '5,10d' file-name
以上所有sed命令都會在stdout上寫入輸出,如果你想要或者使用sed的-i
標志來內聯編輯文件,你可以將其重定向到另一個文件。
用awk:
# delete line 1
awk 'NR == 1 {next} {print}' file
# delete line number stored in shell variable $n
awk -v n=$n 'NR == n {next} {print}' file
# delete between lines $a and $b inclusive
awk -v m=$a -v n=$b 'm <= NR && NR <= n {next} {print}' file
要保存一些字符, {print}
只能用1
替換
要覆蓋原始文件,您必須執行以下操作
awk '...' file > tmpfile && mv tmpfile file
如果你的系統有它,你可以使用bash。 背后的基本思想是在迭代文件時設置計數並遞增此計數。
1)從文件中刪除除第一行以外的所有行
read -r line < file; echo "$line" > temp && mv temp file
2)用行號從文件中刪除一行
declare -i count=0
while read -r line
do
((count++))
case "$count" in
10) continue;;
* ) echo "$line";;
esac
done < file > temp && mv temp file
3)從具有一系列行號的文件中刪除行,例如從10到20
declare -i count=0
while read -r line
do
((count++))
if (( $c < 10 && $c > 20 ));then
echo "$line";;
fi
done < file > temp && mv temp file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.