Linux 如何从文件夹中的所有文件中删除具有特定字符串的行

Linux 如何从文件夹中的所有文件中删除具有特定字符串的行,linux,powershell,shell,Linux,Powershell,Shell,我正在寻找从文件中删除所有行(对于文件夹中的所有文件)have string#并复制文件名并将其添加为第一列(或最后一列)的方法: 我举了一个例子: # DX # DEPTH MD DX DY 100 23 35 100 23 35 输出应如下所示,假设文件名为test2: test2 MD DX DY test2 100 23 35 test2 100 23 35 谢谢, 考虑使用find/sed为每个进程构造命令行 find * -type f | xar

我正在寻找从文件中删除所有行(对于文件夹中的所有文件)have string#并复制文件名并将其添加为第一列(或最后一列)的方法:

我举了一个例子:

# DX 
# DEPTH 
MD   DX  DY
100  23  35
100  23  35
输出应如下所示,假设文件名为test2:

test2 MD   DX  DY
test2 100  23  35
test2 100  23  35
谢谢,
考虑使用find/sed为每个进程构造命令行

find * -type f | xargs -I@ sed -e '/#/d' -e 's/^/@ /' @
以上内容将打印组合输出。如果需要修改文件,请考虑使用内联编辑(sed-i)


利用简单的bash结构,遍历每个文件的每一行,将行和文件名保存为变量,然后在文件中的每一行同时打印这两个变量

for file in *; do
  for (( i = 1 ; i <= $( grep "" -c $file ) ; i++ ); do
    line=$( cat $file | head -n ${i} | tail -1 )
    echo "${file} ${line}"
  done
done
用于*中的文件;做

for((i=1;我感谢代码!!我如何才能复制文件名并将其添加为第一列?输出已经包括文件名(在Mint 19上运行)作为第一列。您是仅使用输出还是使用文件更新命令?
for file in *; do
  for (( i = 1 ; i <= $( grep "" -c $file ) ; i++ ); do
    line=$( cat $file | head -n ${i} | tail -1 )
    echo "${file} ${line}"
  done
done