如何从一个文件中读取文件名,并将文件名和内容存储到另一个文件中,分隔符为‘|’.

我有一个名为Filenames.txt的文件,它存储文本文件的名称.

> Cat Filenames.txt
File1.txt
File2.txt
File3.txt

> Cat File1
This is content of File1

> Cat File2
This is content of File2

> Cat File3
This is content of File3

所有这些文件Filenames.txt、File1.txt、File2.txt、File3.txt都存储在名为TestDir的目录中.

我的预期输出如下: 生成以下格式的新文件.

> Cat Outputfile.txt
File1|This is content of File1
File2|This is content of File2
File3|This is content of File3

我try 了下面的代码,但遇到了一些错误,

#!usr/bin/env bash
file=$(cat Filenames.txt)
y=$(pwd)
for line in $file
do
    x=$(cat "${line}")
   echo -e "${line}"|"${x}" >> Outputfile.txt
done

了解以下错误,

$ bash Script.sh
cat: 'file1.txt'$'\r': No such file or directory
Script.sh: line 7: : command not found
cat: 'file2.txt'$'\r': No such file or directory
Script.sh: line 7: : command not found
Script.sh: line 7: This is content of File3: command not found

当前输出:

test1_file
|
test2_file
|
test3_file|

注意:我在WindowsMachine中使用了Bash Shell

请帮帮忙. 向您致敬, 苏拉杰

推荐答案

首先,您需要删除CRLF个以:结尾的窗口行:

dos2unix Filenames.txt

然后,我会做什么:

#!/usr/bin/env bash

while IFS= read -r file; do
    echo "$file|$(< $file)"
done < Filenames.txt > Outputfile.txt

cat Outputfile.txt

File1.txt|This is content of File1
File2.txt|This is content of File2
File3.txt|This is content of File3

你的谢邦#!usr/bin/env bash是错的,错过了usr的领先/.

我的版本是根据您的代码简化的.


要逐行解析文件,请不要使用for loop,而应使用https://mywiki.wooledge.org/BashFAQ/001

Linux相关问答推荐

Linux x86_64上PIE ELF可执行文件的.Text段的基本虚拟地址

是否有例外情况需要在.gitconfig中使用?

为什么当凭证助手设置为存储 SSH 远程存储库时 git pull 不使用 .git-credentials

ln命令报错target not a directory

使用 sed 或 awk 格式化文本

如何使用正则表达式在 LINux 中查找具有不同结尾的多个文件?

获取S3路径的linux命令

Bash shift 改变了关联数组的期望值

sed 命令在 gitlab runner 上无法正确执行

argv的编码是什么?

C hello world 的汇编输出的每一行是什么意思?

哪个程序在给定任何文件的情况下创建一个 C 数组?

如何在python中找到文件或目录的所有者

我可以在 Ubuntu 上使用 Homebrew 吗?

如何在没有空格的情况下打印 awk?

使用sudo apt-get install build-essentials

如何运行时调试共享库?

linux根据文件名模式搜索文件

如何编写 Mono 守护程序

如何在没有 root 用户的情况下在 Linux (CentOS) 中安装软件包并进行自动依赖处理?