Linux 如何从文件夹中的所有文件中删除具有特定字符串的行
我正在寻找从文件中删除所有行(对于文件夹中的所有文件)have string#并复制文件名并将其添加为第一列(或最后一列)的方法: 我举了一个例子: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
# 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