Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 通过循环将文本从文件的第一行追加到最后一行_Bash_Shell - Fatal编程技术网

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,