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
Shell 如何将.txt文件的内容逐行附加到另一个.txt文件中?_Shell - Fatal编程技术网

Shell 如何将.txt文件的内容逐行附加到另一个.txt文件中?

Shell 如何将.txt文件的内容逐行附加到另一个.txt文件中?,shell,Shell,因此,我有一个包含此内容的1.txt文件 1.1.1.1/0 2.2.2.2/0 9.9.9.9/0 我想将它们附加到一个2.txt文件中,以便如下所示: ...... 1.1.1.1/0 2.2.2.2/0 9.9.9.9/0 我应该怎么做?简单的方法是使用命令替换将file1重定向到printf“%s\n”,并将结果重定向到file2。例如,假设: $ cat file1.txt 1.1.1.1/0 2.2.2.2/0 9.9.9.9/0 您可以使用一个(到Truncate/创建一个新

因此,我有一个包含此内容的1.txt文件

1.1.1.1/0 2.2.2.2/0 9.9.9.9/0
我想将它们附加到一个2.txt文件中,以便如下所示:

......
1.1.1.1/0
2.2.2.2/0
9.9.9.9/0

我应该怎么做?

简单的方法是使用命令替换将
file1
重定向到
printf“%s\n”
,并将结果重定向到
file2
。例如,假设:

$ cat file1.txt
1.1.1.1/0 2.2.2.2/0 9.9.9.9/0
您可以使用一个
(到Truncate/创建一个新的
文件2.txt
)创建您想要的
文件2.txt
,以将输出重定向到
文件2.txt
,但是如果您想要
附加到
文件2.txt
的原始内容,请使用
,例如:

$ printf "%s\n" $(<file1.txt) >>file2.txt
(这通常被称为printf技巧,其中
printf“%s\n”
将依赖单词拆分将列表拆分为与列表中相同数量的新行分隔的单个单词。它还有许多其他用途。请注意,如果您的行数超过了shell可以作为参数保存的行数,如果我正确回忆是32767,这可能不起作用)

另一种更标准的方法是使用
tr
空格
翻译成
'\n'
,例如

$ tr ' ' '\n' < file1.txt >> file2.txt
(与创建/附加
/>>
上的注释相同)

您也可以使用
sed
执行相同的操作,例如:

$ sed 's/[ ]/\n/g' file1.txt >> file2.txt
sed
的好处是允许您控制地址之间任意数量空格的替换。例如,如果地址之间有一些可变数量的空格或制表符,您可以使用
sed
as来处理:

$ sed 's/[ \t][ \t]*/\n/g' file1.txt >> file2.txt

试试看,知道
tr
sed
是更健壮的解决方案,但是printf技巧也可以派上用场。

简单的方法是使用命令替换将
file1
重定向到
printf“%s\n”
,并将结果重定向到
file2
。例如,假设:

$ cat file1.txt
1.1.1.1/0 2.2.2.2/0 9.9.9.9/0
您可以使用一个
(到Truncate/创建一个新的
文件2.txt
)创建您想要的
文件2.txt
,以将输出重定向到
文件2.txt
,但是如果您想要
附加到
文件2.txt
的原始内容,请使用
,例如:

$ printf "%s\n" $(<file1.txt) >>file2.txt
(这通常被称为printf技巧,其中
printf“%s\n”
将依赖单词拆分将列表拆分为与列表中相同数量的新行分隔的单个单词。它还有许多其他用途。请注意,如果您的行数超过了shell可以作为参数保存的行数,如果我正确回忆是32767,这可能不起作用)

另一种更标准的方法是使用
tr
空格
翻译成
'\n'
,例如

$ tr ' ' '\n' < file1.txt >> file2.txt
(与创建/附加
/>>
上的注释相同)

您也可以使用
sed
执行相同的操作,例如:

$ sed 's/[ ]/\n/g' file1.txt >> file2.txt
sed
的好处是允许您控制地址之间任意数量空格的替换。例如,如果地址之间有一些可变数量的空格或制表符,您可以使用
sed
as来处理:

$ sed 's/[ \t][ \t]*/\n/g' file1.txt >> file2.txt

试试看,知道
tr
sed
是更健壮的解决方案,但是printf技巧也可以派上用场。

你想用换行符替换空格吗?比如@BenjaminW。指出,
vim
中的
:%s/\r/g
将导致换行符替换空格。然后,您可以执行cat
1.txt>>2.txt
以换行符替换空格?如@BenjaminW。指出,
vim
中的
:%s/\r/g
将导致换行符替换空格。然后,您可以执行cat
1.txt>>2.txt
您将需要
>file2.txt
,因为OP特别要求append.OOh好捕获!更新。非常感谢大家。值得一提的是,
tr-s'[:blank:]['\n'
可以与上一个sed示例做相同的操作。您需要
>file2.txt
,因为OP特别要求append.OOh很好!更新。非常感谢大家。可能值得一提的是,
tr-s'[:blank:]['\n'
可以完成与上一个sed示例相同的操作。