gen*_*bee 9 sed text-processing
如何从所有文件的字符串中删除其余文件?
例如,输入文件1和2,字符串是ddd。
输入文件1。
aaa
bbb
ccc
ddfbbd dddaaa
eee
Run Code Online (Sandbox Code Playgroud)
输出文件1。
aaa
bbb
ccc
ddfbbd
Run Code Online (Sandbox Code Playgroud)
输入文件2。
ccc
aergddd
dasdvsdb
Run Code Online (Sandbox Code Playgroud)
输出文件2。
ccc
aerg
Run Code Online (Sandbox Code Playgroud)
gle*_*man 11
使用 GNU sed:
str="ddd"
for file in 1 2; do
sed -i "/$str/ {s/$str.*//; q}" "$file"
done
Run Code Online (Sandbox Code Playgroud)
这需要在循环中:否则该q命令将在仅处理第一个文件后中止整个过程。
使用 Perl:
perl -i -0777 -pe 's/ddd[\s\S]*//' file
Run Code Online (Sandbox Code Playgroud)
或者
perl -i -0777 -pe 's/ddd.*//s' file
Run Code Online (Sandbox Code Playgroud)
-i: 修改文件到位。
-0777: 强制 Perl 将文件作为一个整体,而不是一行一行。
-pe:
-p: 循环 Perl 代码。-e: 执行 Perl 代码。's/ddd[\s\S]*//':用空字符串替换(包括它)之后的所有内容(每个空格 ( \s) 和非空格 ( \S) 字符)ddd。
's/ddd.*//s': 用空字符串替换(包括它.*)之后的所有内容 ( ) ddd。最后的s标志.*也匹配换行符(感谢@glennjackman)。
可以在此处找到有关 Perl 标志的更多信息。
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |