从bash命令行转换txt文件

从bash命令行转换txt文件,bash,text,sed,Bash,Text,Sed,如果我有一个txt文件,每行都有一个项目,例如,fruits.txt apples oranges bananas cherries 如何使用bash命令行/s将其转换为另一个txt文件,该文件具有对应于特定水果的枚举id,比如说fructID.txt item { id: 1 name: 'apples' } item { id: 2 name: 'oranges' } item { id: 3 name: 'bananas' } item { id: 4

如果我有一个txt文件,每行都有一个项目,例如,fruits.txt

apples
oranges
bananas
cherries
如何使用bash命令行/s将其转换为另一个txt文件,该文件具有对应于特定水果的枚举id,比如说fructID.txt

item {
  id: 1
  name: 'apples'
}

item {
  id: 2
  name: 'oranges'
}

item {
  id: 3
  name: 'bananas'
}

item {
  id: 4
  name: 'cherries'
}
尝试:

nl fruits.txt | awk'{print item{\n\t id:$1\n\t name:$2\n}}'>fruitsid.txt

试试:

nl fruits.txt | awk'{print item{\n\t id:$1\n\t name:$2\n}}>fruitsid.txt

awk解决方案:

awk '{ printf "item {\n  id: %d\n  name: \047%s\047\n}\n",NR,$1 }' fruits.txt > fruitids.txt
最终的fructids.txt内容:

item {
  id: 1
  name: 'apples'
}
item {
  id: 2
  name: 'oranges'
}
item {
  id: 3
  name: 'bananas'
}
item {
  id: 4
  name: 'cherries'
}
Awk解决方案:

awk '{ printf "item {\n  id: %d\n  name: \047%s\047\n}\n",NR,$1 }' fruits.txt > fruitids.txt
最终的fructids.txt内容:

item {
  id: 1
  name: 'apples'
}
item {
  id: 2
  name: 'oranges'
}
item {
  id: 3
  name: 'bananas'
}
item {
  id: 4
  name: 'cherries'
}

另一个纯bash解决方案:


另一个纯bash解决方案:


你可以用awk来做,你可以用awk来做,bash一行代码真的很难读:请添加一些新行bash一行代码真的很难读:请添加一些新行
item {
  id: 1 
  name: 'apples'
}
item {
  id: 2 
  name: 'oranges'
}
item {
  id: 3 
  name: 'bananas'
}
item {
  id: 4 
  name: 'cherries'
}