linux - 在 linux 文件中的每一行之前添加文本

标签 linux loops for-loop awk

文本文件有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

关于linux - 在 linux 文件中的每一行之前添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45790884/

相关文章:

c - 使用 system() 打开 2 个终端并选择默认输出

c++ - 多个视频渲染期间图片颜色错误

javascript - JS - 将函数插入数组并为其命名

c - 在循环中使用 fgets 从终端读取

linux - 双启动 PC (Windows/Linux) 上的 Windows 时间错误

linux - 如何测试消息是否已发送到系统日志

python - 如何使用2个循环,如果为假,则无限期地重复该程序

php - 如何检测我所在的类别页面的 slug? (WooCommerce)

r - 来自函数的消息被多次重复

javascript - For 循环从不执行(Javascript/Jquery)