我需要删除某些 txt 文件中以“#”开头的行。但忽略第一行作为标题。如何使 grep 忽略第一行并删除其余行中以 # 开头的任何行?
cat sample.txt
#"EVENT",VERSION, NAME
1,2,xyz
1,2,abc
1,2,asd
1,2,ert
#"EVENT",VERSION, NAME
1,2,xyz
1,2,abc
1,2,xyz
cat sample.txt | grep -v "^\s*[#\;]\|^\s*$" > "out.txt"
Run Code Online (Sandbox Code Playgroud)
但这也删除了标题!
使用 sed:
sed '2,${/^#/d}' sample.txt
Run Code Online (Sandbox Code Playgroud)
从第二行 ( 2) 到最后一行 ( $):搜索 ( )以 ( )/.../开头的行并删除 ( ) 它们。sed 的默认操作是打印当前行。^#d
输出:
#“事件”,版本,名称 1,2,xyz 1,2,ABC 1,2,反式 1,2,呃 1,2,xyz 1,2,ABC 1,2,xyz