Text-Processing

如何反轉輸入順序?

  • May 23, 2019

以下程式碼在從頭到尾輸入時提供反向輸出,因此要求輸入是反向的。這怎麼能被翻轉/逆轉?

於 2019-05-23_07:52:04 編輯

(printf 'g?%s?m0\n' 0005 0004 0003 0002 0001 ; printf 'wq\n') | ed -s file.txt

但是,我想做:

(printf 'g?%s?m0\n' 0001 0002 0003 0004 0005 ; printf 'wq\n') | ed -s file.txt

並在頂部獲取輸出順序,file.txt如下所示:

0001
0002
0003
0004
0005

file.txt是一個播放列表,ffmpeg上面的零填充數字是一些選定的影片文件名。播放列表中已經有一堆文件名/影片,我想在編譯之前將一些移到頂部。但是,如果需要從第一個到最後一個順序,則不需要像printf命令所要求的那樣以相反的順序輸入它們。

更新於 2019-05-23_07:54:27

$ cat file.txt
5575
3585
0004
7774
0003
5385
0001
8658
0002
0005

$ (printf 'g?%s?m0\n' 0001 0002 0003 0004 0005 ; printf 'wq\n') | ed -s file.txt

$ cat file.txt
0005
0004
0003
0002
0001
9374
4845
4834
4883
5848

記下最後一個cat命令和輸出的順序。

( printf 'g?%s?m0\n' 0005 0004 0003 0002 0001 | tac ; printf 'wq\n' ) | ed -s file.txt

這反轉了ed第一個生成的命令printf

儘管我的建議tac奏效了,但我認為也許你讓這件事變得更加困難。

如果您有file.txt,並且您只是想在 的開頭添加一些行file.txt,例如您在 a 中的行header_file.txt,您可以簡單地執行以下操作:

cat header_file.txt file.txt > new_playlist.txt

並做了。

引用自:https://unix.stackexchange.com/questions/520640