小编ram*_*ran的帖子

仅在与模式匹配的每一行之前打印第 N 行

我试图<N>在搜索模式之前只打印第 th 行。grep -B<N>打印<N>搜索模式之前的所有行。我在这里看到了 awk 代码它只能打印<N>搜索模式后的第 th 行。

awk 'c&&!--c;/pattern/{c=N}' file
Run Code Online (Sandbox Code Playgroud)

如何修改它以仅在<N>匹配的每一行之前打印第 th 行pattern?例如,这是我的输入文件

...
...
   0.50007496  0.42473932  0.01527831
   0.99997456  0.97033575  0.44364198
Direct configuration=     1
   0.16929051  0.16544726  0.16608723
   0.16984300  0.16855274  0.50171112
...
...
   0.50089841  0.42608090  0.01499159
   0.99982054  0.97154975  0.44403547
Direct configuration=     2
   0.16931296  0.16553376  0.16600890
   0.16999941  0.16847055  0.50170694  
...
Run Code Online (Sandbox Code Playgroud)

我需要一个可以返回2nd line搜索字符串之前的命令Direct configuration。我正在尝试在SUSE-Linux 中运行它

awk search text-processing

5
推荐指数
2
解决办法
9939
查看次数

根据字符串的存在编辑文件

我有一个输入文件,例如,file1显示如下:

WRITE=2
START=1
SMEAR=0
MIN=6
MAX=100
Run Code Online (Sandbox Code Playgroud)

我的问题是搜索字符串SMEAR,如果字符串存在,则将整行替换为SMEAR=-5. 但是,如果SMEAR不存在,那么我需要插入一个新行SMEAR=-5。最终这条线SMEAR=-5应该只出现一次。我可以使用 sed 替换字符串:

 sed -i '/SMEAR/c\SMEAR=-5' file1
Run Code Online (Sandbox Code Playgroud)

或者我可以将字符串作为新行插入

 sed -i '10i SMEAR=-5' file1
Run Code Online (Sandbox Code Playgroud)

但是如何根据文件中字符串的存在来组合它们?

编辑: 如果我可以将 的值SMEAR作为变量传递也会有所帮助。

sed text-processing

4
推荐指数
2
解决办法
354
查看次数

使用重命名命令重命名文件的第一部分

我在一个目录中有三个文件(在 mac-osx 终端中)说

INIT_Struc1
INIT_Struc2
INIT_Struc3
Run Code Online (Sandbox Code Playgroud)

我需要重命名为

FINAL_Struc1
FINAL_Struc2
FINAL_Struc3
Run Code Online (Sandbox Code Playgroud)

当我使用重命名命令(通过自制软件安装)时

rename -n 's/\INIT_$/FINAL_/' INIT_*
Run Code Online (Sandbox Code Playgroud)

它不会重命名文件。我对无法重命名文件的重命名命令做错了什么。

directory filenames rename

2
推荐指数
1
解决办法
805
查看次数

提取包含具有匹配字符串的文件的目录路径

我在多个级别有多个子目录,其中包含一个文件 results.out

./dir1/results.out
./dir2/dir21/results.out
./dir3/dir31/dir311/results.out
Run Code Online (Sandbox Code Playgroud)

现在,我需要寻找string1results.out和这些提取的目录路径results.out包含string1,因为我需要这些子目录移动到另一个位置。例如,我可以使用以下代码获取文件路径

for i in $(find . -type f -name "results.out);
do
grep -l "string1" $i
done
Run Code Online (Sandbox Code Playgroud)

如何修改上面的代码只获取目录路径?

grep directory find files

2
推荐指数
1
解决办法
4674
查看次数

标签 统计

directory ×2

text-processing ×2

awk ×1

filenames ×1

files ×1

find ×1

grep ×1

rename ×1

search ×1

sed ×1