我有一个文本文件(file.txt),在该文本文件中,必须执行命令的所有文件的路径。如何在for循环中迭代并在文本文件的每个路径上执行文件上的命令?我试过这样做:
#!/bin/sh
LOC=pathto the file
for f in $LOC;
do
sed -i '1i\10004' $f;
done
我有一个要求。
我有一个名为a.txt的文本文件,它有一个单词列表-
GOOGLE
FACEBBOK
现在我有了另一个名为b.txt的文件,它的内容为
Company name is google.
Company name is facebook.
就像这样,很多行都有不同的词。
我在写剧本文件-
FILENAME="a.txt"
SCHEMA=$(cat $FILENAME)
for L in $SCHEMA
do
echo "${L,,}"
sed -i -E "s/.+/\L&_/" b.txt
done
所
我有(比方说) 100行的“file1”。我想使用sed或awk将第23、71和84行(例如)打印到'file2‘。这3个行号位于一个单独的文件'list‘中,每个行号都在单独的行中。
当我使用这两个命令中的任何一个时,只有第84行被打印出来:
for i in $(cat list); do sed -n "${i}p" file1 > file2; done
for i in $(cat list); do awk 'NR==x {print}' x=$i file1 > file2; done
可以以这种方式使用for循环向s
我有许多类似但略有不同结构的纯文本文件,我需要从其中提取一条特定的行。
这一行文本并不遵循任何特定的模式(即,它的内容总是不同的),并且并不总是在文件中的同一位置--尽管通常接近文件的开头。
这些文件是新闻稿(最初是PDF格式,用pdftotext动态转换成文本),我需要提取的行是主题,之后我需要使用它作为文件名。
如果我只是在这些文件上运行sed -n '1p',提取第一行,有时我会得到我想要的结果,更多的情况是没有。
我得到的不同结果的样本如下:
Title of the press release # correct result
我有一个包含以下格式内容的文件:
wwid 525a9370dcb2348b03884049000190l
第二个字段在每一行上都是不同的,我需要用64个新的不同的字符串替换其中的64行。
我有这个脚本--它确实改变了第二个字段--但是,它正确地更改了第一个匹配的行--但是保持其余的行不变--它一直这样做,直到读取文件的末尾。所以这看起来像是一个循环问题。
有什么想法吗?下面是脚本:
while read line
do sed -e "0,/wwid/ s/wwid .*$/wwid "${line}"/" oldluns
done < new
我编写了一个工作的bash脚本,它循环一些文件来读取它们的纯文本,用sed修改它,并用修改过的文本替换模板文件中的字符串。
我通过删除替换部分的sed实现了这一点(在我的具体案例中,我发现很难使用它进行多行替换)。
直到现在,当我试图增加文件中段落的数量(从200个增加到225个)之前,awk一直工作得很好。我得到了错误的script.sh: line 11: /usr/bin/awk: Argument list too long,现在模板文件比它工作时(打开,200段,关闭)之前被切碎(开始,14段,关闭)。
这一切为什么要发生?我如何解决它,可能保持awk
为什么awk现在只打印14段,
我有一个名为test-domain的文件,其内容包含第100.am行。
当我这样做时,与预期一样,从测试域文件中删除了带有100.am的行:
for x in $(echo 100.am); do sed -i "/$x/d" test-domain; done
但是,如果不是echo 100.am,而是从一个名为“不必要的行”的文件中读取每一行,那么它就不能工作。
for x in $(cat unwanted-lines); do sed -i "/$x/d" test-domain; done
即使只有一行不想要的内容也是如此,确切的内容为100.am。
我的脚本的这一部分是比较文件的每一行,以找到一个预设的字符串。如果字符串在文件中不作为一行存在,则应将其追加到文件的末尾。
STRING=foobar
cat "$FILE" | while read LINE
do
if [ "$STRING" == "$LINE" ]; then
export ISLINEINFILE="yes"
fi
done
if [ ! "$ISLINEINFILE" == yes ]; then
final.txt看起来像:
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping/camping.design
src/aura/camping/camping.design-meta.xml
我只想将包含/aura/的文件替换为src/aura/camping。
if [ -e final.txt ]
then
ARRAY=()
while read CFILE
do
echo Analyzing fi
我们目前正在使用sed过滤回归运行的输出。有时我们有一个过滤器,看起来像这样:
/copyright/,/end copyright/d
如果该end copyright丢失,则删除该文件的其余部分。我想知道是否有什么方法可以产生错误?awk也可以使用。我真的不想添加这样的代码:逐行读取文件,并在碰到EOF时发出错误。
here's a string
copyright
2016 jan 15
end copyright
date 2016 jan 5 time 15:36
last one
如果end copyright丢失了,我想知道一个错误。真正的过滤器也会用日期取代日期行,所以
假设有三个程序的管道:
start | middle | end
如果start和end现在是perl脚本的一部分,我如何通过perl脚本中的shell命令传输数据,以便通过middle
我尝试了以下方法(对于缺乏严格的模式表示歉意,它应该是概念的简单证明):
#!/usr/bin/perl -n
# Output of "start" stage
$start = "a b c d\n";
# This shell command is "middle"
open (PR, "| sed -E 's/a/-/g' |
我需要一个sed命令的帮助,它将生日的行复制到标准输出,删除以"A“开头的所有行。假设我的sample.txt文件如下所示:
A birthday is very much celebrated.
Today is my birthday.
I can celebrate my birthday.
A man can do anything.
这是样本输出:
今天是我的生日。
我可以庆祝生日。
所以,关于生日的台词:
sed -n /birthday/p sample.txt
以及删除以“A”开头的行:
sed -n '/^A/!p' sample.txt
我有一个三步的问题:我需要
在乳胶文件中查找字符:的所有出现,但仅当它位于或 **中时,才能找到其他字符。示例:The system's total energy (\ref{eq:E}).
将那些:替换为_。示例变成:The system's total energy (\ref{eq_E}).
在大约100个文件中,对引用或标签中出现的所有这类:执行此操作。
我以前从没这么做过。我已经计算出我可以使用正则表达式来查找复杂的事件。我可以在\ref{或\label{中找到(\\ref\{|\\label\{),但是我不能把它放在后面,因为它的宽度不是固定的。
为什么此脚本适用于旧版本的文件?
我想删除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"
在bash中,我想提取许多文件名的一部分,并将输出保存到另一个文件中。
这些文件的格式为coffee_{我想要的一些数字}.freqdist。
#!/bin/sh
for f in $(find . -name 'coffee*.freqdist)
该代码将找到所有的coffee_{我想要的数字}.freqdist文件。现在,我如何创建一个只包含{我想要的数字}的数组并将其写入文件?
我知道要写入文件,一行将以下面的语句结束。
> log.txt
我忽略了如何过滤文件名列表的中间部分。
我有一个文件,它放在不同的文件夹中(文件扩展名为.mvw)。我想要编写一个脚本,这个脚本指向每个文件夹,并将一个字符串(在文件*.mvw中) "D3PLOT_1DForce“替换为文件夹的名称。
文件夹结构如下-
XYZ_DV_L02_P01
XYZ_DV_L02_P02
XYZ_DV_L02_P03
我写了以下剧本-
#!/bin/sh
for ii in XYZ_DV_L02* ; do
(cd "$ii")
find . -iname "*.mvw" -type f -exec sed -i "s/D3PLOT_1DForce_EffPlS