使用p.txt:
$cat p.txt
R 3
R 4
S 1
S 2
R 1
T 1
R 3
Run Code Online (Sandbox Code Playgroud)
以下命令根据第二列进行排序:
$cat p.txt | sort -k2
R 1
S 1
T 1
S 2
R 3
R 3
R 4
Run Code Online (Sandbox Code Playgroud)
以下命令删除第二列中的重复值:
$cat p.txt | sort -k2 | awk '!x[$2]++'
R 1
S 2
R 3
R 4
Run Code Online (Sandbox Code Playgroud)
现在为 sapce 插入一个逗号,我们有以下文件:
$cat p1.csv
R,3
R,4
S,1
S,2
R,1
T,1
R,3
Run Code Online (Sandbox Code Playgroud)
以下命令仍然根据第二列进行排序:
$cat p1.csv | sort -t "," -k2
R,1
S,1
T,1
S,2
R,3
R,3 …Run Code Online (Sandbox Code Playgroud) 打开我的串行端口/dev/tty/USB0后pyserial:
>>> ser = serial.Serial("/dev/ttyUSB0", 57600)
>>> ser.isOpen()
True
>>> ser.close()
>>> ser.isOpen()
False
Run Code Online (Sandbox Code Playgroud)
我无法再/dev/ttyUSB0使用命令读取,cat /dev/ttyUSB0
通常cat /dev/ttyUSB0是像这样的阻塞命令read,但是在使用 pyserial 打开/关闭串行端口后,该cat命令变得非阻塞,看起来很忙......
有谁知道是什么原因造成的?
如何读取多个文件的第二行,然后将结果输出到TXT文件?
到目前为止,我可以使用以下命令读取一个文件的第二行:
cat file-1.txt | awk 'NR == 2'
Run Code Online (Sandbox Code Playgroud)
但是,它正在读取数百个文件的第二行并将结果写入 TXT 文件,但我陷入了困境。
cat file-1.txt | awk 'NR == 2'
cat file-2.txt | awk 'NR == 2'
...
cat file-199.txt | awk 'NR == 2'
cat file-200.txt | awk 'NR == 2'
Run Code Online (Sandbox Code Playgroud) 我试图将不同子文件夹中的几千个文件连接到一个文件中,并将每个连接文件的名称插入为第一列,以便我知道每个数据行来自哪个文件。本质上是从这样的事情开始:
编辑:我忽略了每个文件都有相同的标头,因此我相应地更新了请求。
Folder1
file1.txt
A B C
123 010 ...
456 020 ...
789 030 ...
Folder2
file2.txt
A B C
abc 100 ...
efg 200 ...
hij 300 ...
Run Code Online (Sandbox Code Playgroud)
并输出:
CombinedFile.txt
A B C
file1 123 010 ...
file1 456 020 ...
file1 789 030 ...
file2 abc 100 ...
file2 efg 200 ...
file2 hij 300 ...
Run Code Online (Sandbox Code Playgroud)
读完这篇文章后,我尝试了以下代码,但最终出现语法错误(抱歉,我对 awk 非常陌生!)
shopt -s globstar
for filename in path/**/*.txt; do
awk '{print FILENAME "\t" $0}' *.txt > CombinedFile.txt …Run Code Online (Sandbox Code Playgroud) 我有两种类型的文件 - 简单的字符文件和pdf文件.
第一个文件的名称是plainFile.abc,第二个文件的名称是pdfFile.pdf
我想将这两个文件合并为一个文件.
目标文件的名称将是combined.file
我正在使用cat命令来实现相同的目的:
Way 1:
cat plainFile.abc > combined.file
cat pdfFile.pdf > combined.file
Way 2:
cat plainFile.abc > combined.file
cat pdfFile.pdf >> combined.file
Run Code Online (Sandbox Code Playgroud)
请注意上述方式中">"和">>"的区别.
在第一种方式中,第二个文件没有附加到目标文件,即使定义说"运算符>可用于将多个文件合并为一个".
在第二种方式中,两个文件合并,但第二个文件被附加在第一个文件结束的位置.我不想要这个.我希望第二个文件从新行中的新位置开始.
我们的想法是将目标文件发送到将被解析的大型机.
所以我希望第二个文件从第一个位置开始:
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
second file should start from position one
Run Code Online (Sandbox Code Playgroud)
但是,现在如果第一个文件在第3个位置结束,那么第二个文件就会在第4个文件之后立即附加.
如何达到我的要求?
CAT命令有更好的方法吗?
谢谢阅读!
我试图File1.txt ">" File2.txt作为终端参数传递给我的程序,以覆盖cat命令.但由于某种原因,该计划无法运作.虽然argc在上面定义的情况下是4,但程序中的条件仍未实现.这是代码:
int main(int argc, char *argv[])
{
int readbytes,fp;
char buf[1024];
if(argc==2)
{
fp=open(argv[1],O_RDONLY);
dup2(0,fp);
close(fp);
readbytes=read(STDIN_FILENO,buf,1024);
write(STDOUT_FILENO,buf,readbytes);
}
if(argc==4)
{
printf("inside4");
fp=open(argv[1],O_RDONLY);
dup2(fp,0);
close(fp);
fp=open(argv[3],O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU);
dup2(fp,1);
close(fp);
readbytes=read(STDIN_FILENO,buf,1024);
//printf("%c",buf);
write(STDOUT_FILENO,buf,readbytes);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我找不到这个问题的解决方案,所以我现在就把它留给专家.这个问题的原因是什么?
注意:
出于某种原因,当我发送./prog File1.txt> File2.txt到程序时,argc==2条件被选中,但是argc是4.为什么?
问候
如何输出cat命令以仅显示文件的85到158行的输出.
我知道我可以将数字添加到每个石灰然后管道它,但我不想删除后面的数字.
或者我应该使用其他文本解析器?谢谢.
我有40多个远程站点,我每天运行CRONTAB,从每个站点服务器收集df -h,并将其附加到家庭办公室报表服务器上的每日日志文件中.是否有一种简单的方法来cat/grep/sed/awk/perl /这个文件,以便任何具有80%或更高的Use%的行被突出显示/着色,因此服务器存在存储限制的可能性较小被忽视了?
谢谢您的帮助.
我在尝试实现此bash命令时遇到问题:
连接当前目录中在文件文本中至少出现一次单词BOB(在任何情况下)的所有文本文件.
这样做是否正确使用cat命令然后grep用来查找单词的出现BOB?
cat grep -i [BOB] *.txt > catFile.txt
Run Code Online (Sandbox Code Playgroud) (这个问题是对这个评论的后续跟进,关于git hooks的答案)
我在bash(到目前为止)中太不熟练了解这句话以及如何采取相应的行动.更具体地说,我被建议避免以cat这种方式使用bash命令:
echo "$current_branch" $(cat "$1") > "$1"
Run Code Online (Sandbox Code Playgroud)
因为操作的顺序取决于特定的shell,它最终可能会破坏传递的参数的内容,所以如果我做对了就提交消息本身?
另外,如何"单独保存内容"?
以下是否有意义?
tmp = "$1"
echo "$current_branch" $(cat $tmp) > "$1"
Run Code Online (Sandbox Code Playgroud)