Bash 通过循环将文本从文件的第一行追加到最后一行
我想在现有文件的每一行末尾追加一个文本。此文本必须从文件的第一行追加到最后一行 问题是,我将文件内容作为输入传递给循环,其输出必须附加到同一个文件中。我想不出它的逻辑 文件名:示例Bash 通过循环将文本从文件的第一行追加到最后一行,bash,shell,Bash,Shell,我想在现有文件的每一行末尾追加一个文本。此文本必须从文件的第一行追加到最后一行 问题是,我将文件内容作为输入传递给循环,其输出必须附加到同一个文件中。我想不出它的逻辑 文件名:示例 cat sample Alex, Johston Samuel, John Vebron, Justus 以上是该文件的内容。现在,在这里,我想用逗号将第一列值(即Alex、Samuel和Verbron)附加到文件的末尾 我的预期输出: Alex, Johston,Alex Samuel, John,Samuel
cat sample
Alex, Johston
Samuel, John
Vebron, Justus
以上是该文件的内容。现在,在这里,我想用逗号将第一列值(即Alex、Samuel和Verbron)附加到文件的末尾
我的预期输出:
Alex, Johston,Alex
Samuel, John,Samuel
Vebron, Justus,Vebron
我编写的脚本用于获取第一列值:
while
read LINE
do
fcol=$(echo $LINE|awk -F, '{ print $1 }')
done < sample
while
读线
做
fcol=$(echo$行| awk-F,{print$1})
完成<样本
在上述循环中,变量
fcol
将存储值-Alex、Samuel、Vebron。我需要将这些值附加到每行的末尾
有没有人能在这方面指导我,这样我就可以修改上面的代码,以获得上面解释的预期输出
谢谢 如果没有某种中间文件(在处理文件之前不将文件内容存储在内存中),则无法执行此操作。也就是说,像
sed-i
这样的东西会对您隐藏这些细节
awk -F, -v OFS=, '{print $0,$1}' sample > sample.new
sed -i.orig -e 's/^\(.\)\(.*\)/&\1/' sample
如果没有某种中间文件(在处理文件之前不将文件内容存储在内存中),则无法完成此操作。也就是说,像
sed-i
这样的东西会对您隐藏这些细节
awk -F, -v OFS=, '{print $0,$1}' sample > sample.new
sed -i.orig -e 's/^\(.\)\(.*\)/&\1/' sample
awk-F,“{print$0”,“$1}”示例
不需要循环,因为awk从输入文件中获取每一行,并根据提供的命令对其进行处理
这里的命令是print$0“,“$1
,它在$0
和$1
后面加上一个”,“
,在它们之间,awk-F,“{print$0”,“$1}”示例
不需要循环,因为awk从输入文件中获取每一行,并根据提供的命令对其进行处理
这里的命令是
print$0“,“$1
,它在$0
和$1
后面加上一个”,“
它们之间可以使用awk执行此操作:
cat sample |awk -F "," '{print $0 ", "$1}'
您可以使用awk执行以下操作:
cat sample |awk -F "," '{print $0 ", "$1}'
我的解决办法是
sed -r 's/([^,]*).*/\0, \1/'
我的解决办法是
sed -r 's/([^,]*).*/\0, \1/'
在文件循环之前初始化
行\u no=0
在处理每行之前,将行\u no
增加1:
下面的sed命令将把$fcol
附加到$line\u no
sed-i“$line\u no s/$/,$fcol/”示例
最后脚本:
line_no=0
while read LINE
do
line_no=$((line_no+1))
fcol=$(echo $LINE|awk -F, '{ print $1 }')
sed -i "$line_no s/$/ ,$fcol/" sample
done < sample
line\u no=0
读行时
做
行号=$((行号+1))
fcol=$(echo$行| awk-F,{print$1})
sed-i“$line_no s/$/,$fcol/”示例
完成<样本
在循环文件之前初始化行\u no=0
在处理每行之前,将行\u no
增加1:
下面的sed命令将把$fcol
附加到$line\u no
sed-i“$line\u no s/$/,$fcol/”示例
最后脚本:
line_no=0
while read LINE
do
line_no=$((line_no+1))
fcol=$(echo $LINE|awk -F, '{ print $1 }')
sed -i "$line_no s/$/ ,$fcol/" sample
done < sample
line\u no=0
读行时
做
行号=$((行号+1))
fcol=$(echo$行| awk-F,{print$1})
sed-i“$line_no s/$/,$fcol/”示例
完成<样本
打印$0,“$1
(如说明中所示)将打印,
,与将打印,
的打印$0“,“$1
(如第一行中所示)。。。这基本上只是说解释有一个打字错误的很长的路。print$0,“$1
(如解释中)将打印,
,而不是print$0”,“$1
(如第一行)将打印,
。。。大部分情况下,这只是一个很长的解释错误的说法。@Rehman Basha和@nu11p01n73R:是的,可以通过这个来完成。但是,我想接受我想要的逻辑。好的,我将提供另一个示例:whilereadline do fcol=$(echo$LINE | awk-F,{print$1}')wget-o wgetlog--output document=genderinfo.html”http://gendersay.com/username=$fcol“性别=$(grep-o--perl regexp)(?运行上述循环将获取fcol
值的性别信息-Alex、Samuel、Vebron。现在我需要将gender
的值附加到每行的末尾,并且也相应地附加。附加过程必须从第一行开始到最后一行line@Rehman巴沙:你们能帮我完成以上工作吗?请检查我的new回答。让我知道它是否解决了您的问题。@Rehman Basha和@nu11p01n73R:是的,可以通过它来完成。但是,我想接受我想要的逻辑。好的,我将提供另一个示例:同时读取行do fcol=$(echo$LINE | awk-F,{print$1})wget-o wgetlog--输出文档=genderinfo.html“http://gendersay.com/username=$fcol“性别=$(grep-o--perl regexp)(?运行上述循环将获取fcol
值的性别信息-Alex、Samuel、Vebron。现在我需要将gender
的值附加到每行的末尾,并且也相应地附加。附加过程必须从第一行开始到最后一行line@Rehman巴沙:你们能帮我完成以上工作吗?请检查我的new回答。让我知道它是否解决了您的问题。您只需将fcol替换为我猜的性别。基于您在上述评论中提供的示例。我尝试了上述代码。所有fcol
值都附加到第一行本身。我得到如下输出:cat示例Alex,Johston,Alex,Samuel,Vebron Samuel,John Vebron,Justus
行号=$($line号+1))
已经为我提供了解决方案。无论如何,谢谢!您只需将fcol替换为我猜的性别..基于您在上述评论中提供的示例。我尝试了上述代码。所有fcol
值都会附加到第一行本身。我得到如下输出:cat sample Alex,