我有这个脚本,它打印出第一行空白的文件:
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
我想替换(删除) ls命令标准输出结果中最后一个控制字符newline的最后一行。我尝试过的sed命令是: ls | sed '$ s/[[:cntrl:]]$//'
ls | sed '$ s/[[:graph:]]$//'
ls | sed '$ s/[[:print:]]$//' 我想要的结果是这样的结果ls | head -c -1 我的sed命令有问题吗?谢谢!
我有一个名为"a6s“的文本文件,包含多行代码,如下所示:
y
n
yyy
n
y
yyy
yy
y
yyy
n
我用了这个脚本:
$ sed -i "s/y$^y/ya\ny/g" a6s;
我希望在最后一行末尾的两个"y“字符和输出的下一行开头插入两个”y“字符:
y
n
yyy
n
ya
yyya
yya
ya
yyy
n
我尝试使用sed和regex取消对文件内容的注释(例如: 0-9{1,5})
# one two 12
# three four 34
# five six 56
以下是有效的方法:
sed -e 's/# one two 12/one two 12/g' /file
然而,我想要的是使用正则表达式模式来替换所有匹配,而不是输入数字,但保留结果中的数字。
我在研究MAC OSX。我正在编写shell脚本,以便在文件中的所有日志消息中添加前缀"//“。我编写了以下sed脚本:
sed -i '' "s|"log+*"|"//log"|g" filename
当日志消息有一行时,脚本运行良好。但是,如果日志有多行,则失败。例:
log("hi
how are
you");
这方面的产出是:
//log("hi
how are
you");
但是
为什么使用sed命令:sed /^a/,/i$/p打印所有行,而不仅仅是以"a“开头、以"i”结尾的行?我不太清楚sed /BEGIN/,/END/p是如何工作的。
STDIN:
arthuri
John
Johnny
Michael
STDOUT:
arthuri
arthuri
John
John
Johnny
Johnny
Michael
Michael
我有下面的数据集。有标题的部分和有副标题的部分。每个区段有多行,两个部分有相同的行数。我可以在每一行的末尾或开头打印一个符号,在示例^、%中,每个部分的符号可能不同。
title^
another title^
other title^
one more title^
(... continues)
subtitle%
other subtitle%
some subtitle%
one more subtitle%
(... continues)
我想输出它
title subtitle
another title other subtitle
other title some subt
我有一个简单的bash (3)脚本,可以扫描目录中的所有文件,并用新的类替换一些旧的CSS类。
export LC_ALL=C
ARRAY=(
"a-oldclass:new-class"
"m-oldclass:new-class"
)
for className in "${ARRAY[@]}" ; do
REGEX=[^a-zA-Z0-9]${className%%:*}[^a-zA-Z0-9]
CHANGE="s/${REGEX}/${className##*:}/g"
fin
我有一个文件,我们叫它input.txt。它有许多行,但唯一相关的行包含一个模型语句;
height ~ mu gender
它也可能包含;
height !n ~ mu date_birth !r g
因此,在regex中识别直线的一致因素是^height.*~.*$。至少到目前为止,这就是我所设计的。
只有在!r g还没有出现的情况下,我才想将!r g添加到结束行。我试着把、和的答案混在一起,但我搞不懂。我更喜欢一个命令。我也一直在玩复杂的awk's和sed's,但我觉得这太简单了,对于一个有经验的人来说,这不需要太困难。
期望的结果:
如果是height ~ mu gen
我需要为目录中的所有文件在第一个/>之后追加一个新字符串。
这是我的剧本:
#!/bin/bash
find ./ -type f -print0 | while IFS= read -r -d '' myfile; do
sed -i '0,/\/>/asome text here' $myfile
done
然而,似乎所有的\n也是匹配的。例如,如果一个文件是这样的:
abc
def
<abc/>
<abc/>
在执行我的脚本之后,我将得到如下结果:
abc
some text here
def
some
我找不到搜索哪些HTM*文件没有DOCTYPE并将此DOCTYPE添加到此特定文件的好方法
我得到了文件列表,如下所示:
for i in ` find . -name "*.htm*" -print`; do grep -L "DOCTYPE" $i;done;
但是我不知道如何使用sed来处理这个列表
我试过了:
for i in ` find . -name "*.htm*" -print; grep -L "DOCTYPE"`; do sed -i '1i <!DOCTYPE HTML PUBLIC "
我试图使用sed命令将模式匹配行(以“>”开头的行)替换为存储在变量中的新行,并对文件夹中的所有文件进行迭代。我想在新名称的中间添加旧名称的一部分(只有字母和数字,如"ngs100")。新名称必须以">hC-19/Tb-“开头,以"/2022”结尾。这是我的剧本:
for file in $1/*.fa
do
echo "Processing file: $file"
OLD_NAME=$(grep ">" $file)
echo "Old name is $OLD