是否有一个命令可以执行与粘贴命令相反的操作?

是否有一个命令可以执行与粘贴命令相反的操作?

paste命令可以将多行合并为一行。例如,如果我有一个文件test.txt,它包含:

原文

a
aa
aaa
b
bb
bbb
c
cc
ccc

我可以使用命令paste -s -d '\t\t\n' test.txt来获取:

处理结果

a   aa  aaa
b   bb  bbb
c   cc  ccc

我想知道是否有一个反向命令可以执行相反的粘贴操作。例如,如果我有“处理结果”,我怎样才能得到“原始文本”?

答案1

没有标准命令。

您必须自己做,并且取决于您的输入。

在这种情况下:

tr '\t' '\n' <pasted_file.txt

会给你原来的。

请注意,它假定\t不会出现在您的原始文件中。

答案2

您可以在处理结果上使用此 sed 命令

sed -e 'y/\t/\n/' processedresult.txt

答案3

您可以将字符替换为 sed 或将字符替换为 tr:

sed -e 's/< old string >/< new string >/g' input-file > output-file

s 表示替换,g 表示替换一行中每次出现的<旧字符串>。如果没有 g,每行只会发生一次替换。

tr '< old char >' '< new char >' < input-file > output-file

答案4

awk版本:

awk -v OFS='\n' '{$1=$1; print}' input-file > output-file

相关内容