[英]How can I delete one row in BASH?
我有以下代码:
1441149726 jezevec Lukas
1441173967 tesak Petr
1441174056 kuna Marek
1441174063 myval Lukas
14411728 potter Marek
1441175214 hermiona Marek
1441219281 liska Marek
1441219282 liska Marek
1441219282 liska Marek
1441219283 liska Marek
我如何删除第7行的liska的第一条记录? 也许用sed? 我有一个文件。
使用GNU sed:
sed '0,/liska/{/liska/d}' file
输出:
1441149726 jezevec Lukas 1441173967 tesak Petr 1441174056 kuna Marek 1441174063 myval Lukas 14411728 potter Marek 1441175214 hermiona Marek 1441219282 liska Marek 1441219282 liska Marek 1441219283 liska Marek
简短的awk
脚本是一种提供大量控制的方法:
awk '
BEGIN { seen=0; }
{
if(seen == 0 && $2 == "liska") {
seen=1
} else {
print $0
}
}
' <infile >outfile
就是说,如果您愿意的话,您也可以在本机bash中实现此功能:
#!/bin/bash
seen=0
while IFS= read -r line; do
if ((seen == 0)) && [[ $line = *" liska *" ]]; then
seen=1
else
printf '%s\n' "$line"
fi
done <in.txt >out.txt
mv out.txt in.txt # if you want to replace the input file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.