[英]Adding text before each line in file in linux
文本文件具有sample.txt
a/b/1
b/f/2
y/z/3
a/y/4
t/q/5
想要像这样的输出
a/1
a/2
a/3
a/4
a/5
尝试过的代码
dir="a/"
num=$(wc -l < sample.txt)
for ((i=1; i<=$num; i++));
do
echo "$dir""`awk -F "/" '{print $NF}' sample.txt`"
echo "$i"
break
done
但这给了我输出
a/1
2
3
4
5
问题是使用awk,它仅更新第一行。 请帮忙
将IFS
设置为包含'/'
的简单while循环同样适用,例如
while IFS="$IFS/" read -r a b c; do
[ -z "$pfx" ] && pfx=$a ## if prefix not set, set it with 1st read
echo "$pfx/$c"
done <tripfile.txt
输入示例
$ cat tripfile.txt
a/b/1
b/f/2
y/z/3
a/y/4
t/q/5
使用/输出示例
$ while IFS="$IFS/" read -r a b c; do [ -z "$pfx" ] && pfx=$a; \
echo "$pfx/$c"; done <tripfile.txt)
a/1
a/2
a/3
a/4
a/5
只需使用诸如awk之类的文本处理工具即可在没有shell循环的情况下执行此操作:
awk -F/ '{ print "a" FS $NF }' file
将字段分隔符设置为/
,然后打印前导文本(在本示例中为“ a”),然后打印字段分隔符,然后是最后一个字段。
$ awk -F/ 'NR==1{x=$1} {print x"/"$3}' sample.txt
a/1
a/2
a/3
a/4
a/5
-F/
这会将字段分隔符设置为/
。
NR==1{x=$1}
这会将第一行的第一字段保存在变量x
。
print x"/"$3
这将打印变量x
,后跟一个斜杠,然后是当前行的第三个字段。
awk -F'/' '{print "a/"$3}' Sample.txt
(要么)
awk -F'/' '{print "a/"$NF}' Sample.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.