如何使用删除文件中两种模式之间的所有行。
这里的模式是//test和//endtest,文件内容:
blah blah blah
c
f
f
[
]
//test
all text to be deleted
line1
line2
xyz
amv
{
//endtest
l
dsf
dsfs
预期结果:
blah blah blah
c
f
f
[
]
//test
//endtest
l
dsf
dsfs
我有很多文本文件是电子邮件模板。由于某种原因,他们中的许多人有以下几句话:
Best Regards,œ
最后这个奇怪的字符是我想用一个命令从所有这些文件中删除的。
我试过:
for f in *
do
sed 's/"Best Regards,œ"/"Best Regards,"/g' $f | tee $f.t && mv $f.t $f
done
这在整个过程中运行,但实际上并没有删除“œ”字符。
请让我知道我做错了什么,以便我可以删除这个字符,也许其他非字母数字字符使用regex :alnum:,也许。
我修正了用
我们有一个进程,它可以使用包含sed命令的文件来更改管道输入。
我需要用变量值替换输入中的占位符,例如,在我可以运行的单个-e类型的命令中;
$ echo "Today is XX" | sed -e "s/XX/$(date +%F)/"
Today is 2012-10-11
然而,我只能在一个文件中指定sed方面(然后将进程指向该文件),例如,一个名为replacements.sed的文件可能包含;
s/XX/Thursday/
所以很明显;
$ echo "Today is XX" | sed -f replacements.sed
To
#!/usr/bin/env bash
set -euo pipefail
while read -r line
do
echo "line via echo:"
echo "$line"
echo "line via sed:"
sed 's/w/f/g' | sed 's/f/zzzzz/g' <<< "$line"
done < /dev/stdin
上面的内容似乎只输出一行,我不知道为什么?
printf "123\n456\n789
我正在尝试查找并替换文件文件夹中的字符串。
有没有人能帮帮我?
我的脚本如下:
#!/bin/bash
OLD="This is a"
NEW="I am a"
DPATH="/home/user/test/*.txt"
BPATH="/home/user/test/backup/foo"
[ ! -d $BPATH ] && mkdir -p $BPATH || :
for f in $DPATH
do
if [ -f $f -a -r $f ]; then
/bin/cp -f $f $BPATH
我有一个名为key.txt的键值文件,带有一个:分隔符。以下是显示值的方式:
server_name:server1
username:someuser
keyname:123key
我的第二个文件是一个脚本文件,它在整个文件中都有这些键。它以以下格式显示在文件中的任何位置,无论是行还是列:
what is the servername '%%server_name%%'
Enter your username '%%username%%'
What is the ssh key value '%%keyname%%'
我想要做的是,当我运行该
我试图递归地循环我的项目文件夹,grep每个PHP文件,并找到任何与xdebug_break();匹配的字符串。
然后,我想删除那个xdebug_break() (我也会接受用空格替换)。
到目前为止,我得到的是:
#!/bin/bash
FILES=$(find ../../Dev/projects/api -type f -name *.php)
for f in $FILES
do
if grep -nr "xdebug_break();" $f
then
sed -e '/xdebug_break();/d' -i $f
我的档案是这样的:
AA 110 B 10 .. BB 15 ... BBB 20 D F 25 D D
AA 111 B 50 .. BB 55 ... BBB 30 F F 45 F F
AA 112 C 2 .. BB 3 ... BBB 0 D F 0 D F
AA 120 D 2 .. FF 3 ... FFF 3 D F 3 D D
我想删除任何列中包含值=< 10的行。我知道sed和awk '$3 !
我刚开始使用bash脚本,我编写了这个脚本来浏览我网站的所有页面,将链接从.html更改为.php。它似乎不起作用。
下面是脚本:
#!/bin/bash
FILES=/opt/lampp/htdocs/doLearnFinnace/*
for f in $FILES
do
echo ;
# take action on each file. $f store current file name
if [ -f "$f" ]
then
echo "Processing $f file..."
sed -e 's/
为什么此脚本适用于旧版本的文件?
我想删除csv的第一行,如果该行包含文本KP_TITEL,如果我在sed之后使用出口测试脚本,一切正常。但是只要我想用while loop测试它,这个文件仍然包含第一行。
有什么想法吗?
sed -i '/KP_TITEL/d' "$1"
# read data
input=$1
while IFS=';' read -r f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13
do
other things
done < "$input"
我有一个csv文件/tmp/test.csv,内容如下。
VM,Datacenter,Cluster,Host,Folder,OS,VM ID,VM UUID,vCenter UUID
A0F0US014XVM022,"/AMMWDC04_DC/A0F0 <96> AA DR","Red Hat Enterprise Linux 6 (64-bit)",vm-2910,421f2eba-8b60-6166-3b56-f22e3f71eecf,94694731-df3a-4ee6-9962-49df97a6f08d
我希望用csv文件中的<96&
我正在尝试使用sed将超过一百个文件中出现的字符串"/net/origin/devdata1/slin“替换为”/ .prm /common/test/HATS“。我认为我在for循环的正确语法方面遇到了问题,该循环循环遍历目录中的不同文件(/home/AutoTest),以及我需要什么/作为命令行参数。提前谢谢。
OLD="/net/origin/devdata1/slin"
NEW="/toolscommon/test/HATS"
DIR="/home/AutoTest"
for f in $DIR
do
cp $f
我在过滤正在写入的日志文件并将输出写入另一个文件(如果可能的话使用tee )时遇到了问题(如果可能的话,我可以看到它正在正常工作)。
我可以让它在stdout上输出,但不能使用tee或>>写入文件。我还可以让它写到文件中,但前提是我需要将-f选项从尾部删除。
因此,以下是命令的概述:
不写入文件的tail -f:tail -f test.log | sed 's/a/b/' works
tail写入文件:tail test.log | sed 's/a/b/' | tee -a a.txt works
tail -f写入文件:tail -
我有这个脚本,它打印出第一行空白的文件:
for f in `find . -regex ".*\.php"`; do
for t in head; do
$t -1 $f |egrep '^[ ]*$' >/dev/null && echo "blank line at the $t of $f";
done;
done
我如何改进才能真正删除空白行,或者至少将第一行空白的所有文件复制到其他地方。
我尝试使用这个复制,这很好,因为它复制保留了目录结构,但它复制了每个php文件,我需要捕获egre
我有一个平面文件数据库,我需要从其中删除某些对象。
文件中有许多块,但我对OBJECT NickCore块中的两个对象感兴趣。
例子如下:
OBJECT NickCore
DATA display SomeUser
DATA pass sha256:2b35341220119fad48762e4f843d1544354f8b196cf09bf1b4ea39f9a31be063:5ff60fae76026907102419460aae83aa74daf374048940b612ef83460043b565
DATA email removed@removed.com
DATA language